리스트 기반 자료구조는 열차 칸을 더하고 빼는 형태의 자료구조이다.
인스턴스 저장 : 열차 칸을 하나 더한다,
인스턴스 삭제 : 해당 열차 칸을 삭제한다.
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의 장단점
- 장점 : 저장 공간을 늘리는 과정이 간단하고 저장된 인스턴스 삭제 과정이 단순하다.
- 단점 : 저장된 인스턴스 참조 과정이 배열에 비해 복잡하다 따라서 느릴수 있다.