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 |