..
Java Map 컬렉션: HashMap, TreeMap, LinkedHashMap 차이점
1. 개요 (Overview)
자바에서 Map 인터페이스는 키(Key)와 값(Value)의 쌍으로 데이터를 관리하는 자료구조입니다. 구현체마다 내부 동작 방식과 성능 특성이 다르므로 상황에 맞는 적절한 클래스를 선택하는 것이 중요합니다.
2. 주요 구현체별 특징
HashMap (빠른 속도)
- 자료구조: 해시 테이블 (Hash Table)
- 특징: 해싱(Hashing)을 사용하여 데이터를 저장하므로 검색 속도가 매우 빠릅니다(평균 O(1)).
- 주의사항: 저장 순서를 보장하지 않으며, Null 키와 Null 값을 모두 허용합니다.
TreeMap (정렬된 상태)
- 자료구조: 레드-블랙 트리 (Red-Black Tree)
- 특징: 키를 기준으로 자동 정렬된 상태를 유지합니다. 범위 검색이나 정렬된 데이터 처리에 유리합니다(O(log n)).
- 주의사항: Null 키를 허용하지 않습니다. (정렬 기준이 모호해지기 때문)
LinkedHashMap (순서 유지)
- 자료구조: 해시 테이블 + 이중 연결 리스트 (Double Linked List)
- 특징: HashMap의 빠른 성능을 가지면서도, 데이터가 삽입된 순서를 기억합니다.
- 용도: 데이터의 삽입 순서나 최근 접근 순서가 중요할 때 유용합니다.
3. 비교 요약표
| Map 구현체 | 순서 보장 | 시간 복잡도 | 주요 특징 |
|---|---|---|---|
HashMap |
X | O(1) | 가장 빠르고 보편적임 |
TreeMap |
O (키 기준) | O(log n) | 키 정렬 기능 제공 |
LinkedHashMap |
O (삽입 순서) | O(1) | 삽입 순서 유지 |
일반적인 경우에는 성능이 가장 뛰어난 HashMap을 사용하고, 데이터 정렬이 필요하면 TreeMap을, 삽입 순서 유지가 필요하면 LinkedHashMap을 선택하는 것이 자바 컬렉션 활용의 정석입니다.