[Java] Collections - List
List Interface
- 순서가 있는(Index) 데이터 집합
- 중복 허용
- 종류
- ArrayList
- LinkedList
- Vector
- Stack
1. ArrayList
- 단방향 포인터 구조로, 인덱스가 있으며, 조회 성능이 좋다. O(1)
- 삽입, 삭제 성능이 안좋음. O(n)
- 내부적으로 배열을 사용
- 배열크기 가변, 크기 조정을 위해 새로운 배열을 생성.
- 주요 Method
- boolean add(E e)
- void add(int index, E e)
- Object[ ] toArray()
- E remove(int index)
- E set(int index, E e) : 데이터를 변경하고, 기존데이터 리턴
2. LinkedList
- 노드와 포인터고 구성
- 삽입, 삭제 성능이 좋음 O(1)
- 조회 성능은 안좋음. O(n)
- 주요 Method
- void add(int index, Object o)
- boolean offer(E o) : 끝에 데이터 추가
- E peek() : 첫 번째 노드 리턴
- E poll() : 첫 번째 노드 리턴 후 삭제
- List subList(int a, int b) : a~b사이의 객체를 List로 변환 후 리턴
3. Vector
- 동기화 !! --> Thread Safe
- Thread 가 1개일 때에도 동기화하기 때문에, 성능 약간 저하
- 나머지는 ArrayList와 동일하게 동작
4. Stack
- Vector를 상속 받음.
- 후입선출(LIFO)
- 주요 Method
- E push(E e)
- E peek() : 데이터 리턴 후 그대로 유지
- E pop() : 데이터 리턴 후 삭제