Programming
Java 주요 컬렉션 비교표
ipxy
2025. 4. 17. 07:47
728x90
✅ Java 주요 컬렉션 비교표
컬렉션 | 특징 | 주요 메서드 성능 | 중복 허용 | 정렬 보장 | 쓰레드 안전 |
ArrayList | 배열 기반 리스트. 인덱스 접근이 빠름. | get: O(1)add/remove: O(n) (중간에서) | 허용 | 삽입 순서 유지 | ❌ |
LinkedList | 이중 연결 리스트 기반. 삽입/삭제 빠름 | get: O(n)add/remove: O(1) (앞뒤에서) | 허용 | 삽입 순서 유지 | ❌ |
HashSet | 해시 기반. 순서 없음. 빠른 검색 | add/remove/contains: O(1) | ❌ 중복 불가 | ❌ | ❌ |
LinkedHashSet | HashSet + 삽입 순서 유지 | HashSet과 동일 | ❌ | ✔ 삽입 순서 유지 | ❌ |
TreeSet | 이진 탐색 트리 기반 (Red-Black Tree) | add/remove/contains: O(log n) | ❌ | ✔ 정렬됨 (자연순/비교기) | ❌ |
HashMap | 키-값 쌍 저장. 빠른 검색 | get/put/remove: O(1) | ❌ (키 중복 불가) | ❌ | ❌ |
Hashtable | HashMap과 유사. 쓰레드 안전 | get/put: O(1) | ❌ | ❌ | ✔ |
ConcurrentHashMap | 멀티스레드 환경에서 동시성 보장 | get/put: O(1) | ❌ | ❌ | ✔ 고성능 |
🧠 선택 가이드
상황 | 추천 컬렉션 | 이유 |
인덱스를 자주 참조해야 함 | ArrayList | 빠른 get(index) |
앞/중간에 자주 삽입/삭제 | LinkedList | addFirst, removeFirst 성능 우수 |
중복 제거 & 빠른 검색 | HashSet | 해시 기반, 중복 없음 |
삽입 순서 유지 + 중복 제거 | LinkedHashSet | 순서 유지되는 Set |
정렬된 Set 필요 | TreeSet | 자동 정렬 + 중복 제거 |
키-값 저장 필요 | HashMap | 대부분의 일반적 Map |
멀티스레드 환경 | ConcurrentHashMap | 동시성 보장, 락 분할 |
Thread-safe + 예전 코드와 호환 | Hashtable | 하지만 요즘엔 거의 안 씀 |
728x90