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

  1. hashCode 계산
  2. 배열 index 결정
  3. equals로 동일성 판단
  4. 충돌 시 체이닝 또는 트리 구조 사용

 

6. 언제 무엇을 써야 할까?

상황 선택
순서 중요, 조회 많음 ArrayList
중복 제거 HashSet
Key-Value 저장 HashMap
자동 정렬 필요 TreeSet/TreeMap
삽입/삭제 빈번 LinkedList

실무에서는

  • 대부분 ArrayList
  • Key-Value는 거의 HashMap

 

7. 인터페이스 타입으로 선언하는 이유

List<String> list = new ArrayList<>();

왼쪽은 인터페이스, 우측은 구현체 구조로 작성하면,

  • 구현체 교체 가능
  • 유연성 확보
  • 느슨한 결합