| 특징 | 설명 |
|---|---|
| 순서 보장 | 요소들이 추가된 순서를 유지함 |
| 인덱스 기반 접근 | list.get(0)처럼 인덱스로 요소에 접근 가능 |
| 중복 허용 | 같은 값을 여러 번 저장할 수 있음 |
| null 저장 가능 | null 값을 저장할 수 있음 |
| 동적 크기 조절 가능 | 배열과 달리 요소가 추가되면 크기가 자동으로 늘어남 |
| 클래스 이름 | 특징 |
|---|---|
ArrayList | 내부적으로 배열 사용, 빠른 조회, 느린 삽입/삭제 |
LinkedList | 내부적으로 연결 리스트 사용, 삽입/삭제 빠름, 조회 느림 |
Vector | ArrayList와 비슷하지만 동기화 지원 (멀티스레드에 적합) |
Stack | Vector를 상속, LIFO 구조 (스택 자료구조) |
| 메서드 | 설명 |
|---|---|
add(E e) | 리스트에 요소 추가 |
add(int index, E element) | 지정된 위치에 요소 삽입 |
get(int index) | 인덱스 위치의 요소 반환 |
set(int index, E element) | 인덱스 위치의 요소를 새 요소로 대체 |
remove(int index) | 인덱스 위치의 요소 제거 |
remove(Object o) | 특정 객체 제거 (처음 나타나는 것만) |
size() | 리스트의 크기 반환 |
contains(Object o) | 해당 요소가 존재하는지 확인 |
indexOf(Object o) | 첫 번째 등장 인덱스 반환 |
clear() | 리스트의 모든 요소 제거 |
isEmpty() | 리스트가 비어 있는지 확인 |
| 연산 | ArrayList | LinkedList |
|---|---|---|
| 조회(get) | 빠름 (O(1)) | 느림 (O(n)) |
| 삽입/삭제 | 느림 (O(n)) | 빠름 (O(1) – 위치만 알면) |
| 메모리 사용량 | 적음 | 큼 (포인터 필요) |