List<E> 인터페이스를 구현하는 컬렉션 클래스들
리스트 기반 자료구조는 열차 칸을 더하고 빼는 형태의 자료구조이다.
인스턴스 저장 : 열차 칸을 하나 더한다,
인스턴스 삭제 : 해당 열차 칸을 삭제한다.
List<E> 인터페이스를 구현하는 대표적인 컬렉션 클래스 둘은 다음과 같다.
- ArrayList<E> : 배열 기반 자료구조, 배열을 이용하여 인스턴스 저장
- LinkedList<E> : 리스트 기반 자료구조, 리스트를 구성하여 인스턴스 저장
이 둘은 기능적 측면에서 보면 완전히 동일하나 인스턴스 저장하는 방식에 차이가 있어 이로인한
장단점이 각각 존재한다.
그리고 List<E> 인터페이스를 구현하는 공통적인 특성 두가지가 있는데
1. 인스턴스의 저장 순서를 유지한다.
2. 동일한 인스턴스의 중복 저장을 허용한다.
List 자료구조의 구성배열 기반의 자료구조이지만 공간의 확보 및 확장은 ArrayList 인스턴스가 스스로 처리한다!
ArrayList.
import java.util.ArrayList;
import java.util.List;
public class ArrayListCollection {
public static void main(String[] args) {
List<String> list = new ArrayList<>(); // 컬렉션 인스턴스 생성
//컬렉션 인스턴스에 문자열 인스턴스 저장
list.add("Toy");
list.add("Box");
list.add("Robot");
//저장된 문자열 인스턴스 참조
for(int i =0; i < list.size(); i++)
System.out.print(list.get(i)+'\t');
System.out.println();
list.remove(0); //첫 번째 인스턴스 삭제
//첫 번째 인스턴스 삭제 후 나머지 인스턴스들을 참조
for(int i=0; i< list.size();i++)
System.out.print(list.get(i) + '\t');
System.out.println();
}
}
실행결과
Toy Box Robot
Box Robot
LinkedList.
public class LinkedListCollection {
public static void main(String[] args) {
List<String> list = new LinkedList<>(); //유일한 변화
list.add("Toy");
list.add("Box");
list.add("Robot");
for(int i =0; i < list.size(); i++)
System.out.print(list.get(i)+'\t');
System.out.println();
list.remove(0);
for(int i=0; i< list.size();i++)
System.out.print(list.get(i) + '\t');
System.out.println();
}
}
실행결과
Toy Box Robot
Box Robot
ArrayList vs LinkedList
ArrayList의 장단점
- 장점 : 저장된 인스턴스의 참조가 빠르다
- 단점 : 저장 공간을 늘리는 과정에서 시간이 많이 소요되고 인스턴스 삭제 과정에서 많은 연산이 필요할 수 있다. 따라서 느릴수 있음.
LinkedList의 장단점
- 장점 : 저장 공간을 늘리는 과정이 간단하고 저장된 인스턴스 삭제 과정이 단순하다.
- 단점 : 저장된 인스턴스 참조 과정이 배열에 비해 복잡하다 따라서 느릴수 있다.
Author And Source
이 문제에 관하여(List<E> 인터페이스를 구현하는 컬렉션 클래스들), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gustjtmd/ListE-인터페이스를-구현하는-컬렉션-클래스들1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)