Back-End/Java
11. 컬렉션 프레임워크(Collection Framework)
Yerin Thea Yoo
2026. 2. 12. 00:16
컬렉션 프레임워크는 여러 개의 데이터를 효율적으로 저장하고 관리하기 위한 구조다.
배열의 한계를 보완하기 위해 등장했으며, Java에서는 java.util 패키지에 포함되어 있다.
1. 컬렉션 프레임워크 구조
컬렉션은 크게 세 가지 계열로 나뉜다.
Collection
├── List
├── Set
Map (Collection과 별도 구조)
- List → 순서 O, 중복 O
- Set → 순서 X, 중복 X
- Map → Key-Value 구조
2. List
순서가 있고, 중복이 허용된다.
1) 주요 구현체
| 클래스 | 특징 |
| ArrayList | 내부 배열 기반 |
| LinkedList | 연결 리스트 구조 |
| Vector | 동기화 지원(구식) |
2) ArrayList
- 조회 빠름(O(1))
- 중간 삽입/삭제 느림
- 가장 많이 사용
List<String> list = new ArrayList<>();
3) LinkedList
- 삽입/삭제 빠름
- 조회는 상대적으로 느림
3. Set
중복을 허용하지 않는다.
1) 주요 구현체
| 클래스 | 특징 |
| HashSet | 해시 기반 |
| LinkedHashSet | 입력 순서 유지 |
| TreeSet | 정렬 유지 |
2) HashSet
- 가장 많이 사용
- 순서 보장 안 됨
- 내부적으로 HashMap 기반
3) TreeSet
- 자동 정렬
- Red-Black Tree 기반
- 성능 O(log n)
4. Map
Key-Value 구조
key → value
- key는 중복 불가
- Value는 중복 가능
1) 주요 구현체
| 클래스 | 특징 |
| HashMap | 해시 기반 |
| LinkedHashMap | 입력 순서 유지 |
| TreeMap | 정렬 유지 |
2) HashMap
가장 많이 사용되는 Map
Map<String, Integer> map = new HashMap<>();
map.put("A", 10);
map.get("A");
- 평균 검색 O(1)
- 내부적으로 배열 + 해시 + 트리 구조
5. 내부 동작 원리 간단 정리
1) ArrayList
- 배열 기반
- 용량 초과 시 배열 복사
2) HashSet
- HashMap 기반
- hashCode + equals로 중복 판단
3) HashMap
- hashCode 계산
- 배열 index 결정
- equals로 동일성 판단
- 충돌 시 체이닝 또는 트리 구조 사용
6. 언제 무엇을 써야 할까?
| 상황 | 선택 |
| 순서 중요, 조회 많음 | ArrayList |
| 중복 제거 | HashSet |
| Key-Value 저장 | HashMap |
| 자동 정렬 필요 | TreeSet/TreeMap |
| 삽입/삭제 빈번 | LinkedList |
실무에서는
- 대부분 ArrayList
- Key-Value는 거의 HashMap
7. 인터페이스 타입으로 선언하는 이유
List<String> list = new ArrayList<>();
왼쪽은 인터페이스, 우측은 구현체 구조로 작성하면,
- 구현체 교체 가능
- 유연성 확보
- 느슨한 결합