HashMap vs TreeMap vs LinkedHashMap
| 항목 | HashMap | TreeMap | LinkedHashMap |
| 기반 자료구조 | Hash Table | Red-Black Tree | Hash Table + Linked List |
| 정렬 여부 | ❌ 없음 | ✅ 자동 정렬 (Key 기준 오름차순) | ❌ 없음 |
| 삽입 순서 유지 | ❌ 없음 | ❌ 없음 (정렬 순서로 유지됨) | ✅ 유지 |
| null 키 허용 | ✅ 1개 허용 | ❌ (NullPointerException 발생) | ✅ 1개 허용 |
| null 값 허용 | ✅ | ✅ | ✅ |
| 시간 복잡도 (삽입/삭제/조회) | 평균 O(1) | O(log n) | 평균 O(1) |
| Iterator 순회 순서 | 예측 불가 | Key 정렬 순 | 삽입 순 |
| Key 비교 방식 | equals() + hashCode() | compareTo() 또는 Comparator | equals() + hashCode() |
| 사용 추천 상황 | 빠른 조회/삽입이 중요할 때 | 정렬된 Key가 필요할 때 | 순서를 기억하면서 빠르게 접근하고 싶을 때 |
상황별 추천
| 매우 빠른 key 기반 탐색 | HashMap |
| Key를 정렬된 상태로 유지해야 할 때 | TreeMap |
| Key 삽입 순서를 기억하면서 탐색도 하고 싶을 때 | LinkedHashMap |
'자료구조' 카테고리의 다른 글
| TreeMap - Java (4) | 2025.05.01 |
|---|---|
| LinkedHashMap - Java (2) | 2025.05.01 |
| HashMap - Java (2) | 2025.05.01 |
| TreeSet vs HashSet vs LinkedHashSet (10) | 2025.04.30 |
| LinkedHashSet - Java (0) | 2025.04.30 |