Java ‐ 컬렉션 프레임워크 선택 기준 정리 - dnwls16071/Backend_Summary GitHub Wiki
📚 다양한 Set
- HashSet
- 순서 없음, 중복 허용 안됨
- 검색, 추가, 삭제 속도가 빠름 (O(1))
- 해시 기반으로 동작
- 데이터를 저장할 때 특정 규칙(해시함수)을 통해 메모리 위치를 빠르게 계산
- LinkedHashSet
- 입력된 순서를 유지하는 HashSet
- HashSet보다 약간 느리지만, 순서 유지가 필요할 때 사용
- 중복은 여전히 허용하지 않음
- TreeSet
- 자동 정렬 (기본: 오름차순, Comparable or Comparator 사용 가능)
- 이진 탐색 트리 기반으로 O(log N) 성능
- 중복 불가능, 정렬이 필요한 경우 사용
📚 다양한 Map
- HashMap
- Key-Value 저장, 순서 보장 안됨
- 빠른 검색 성능(O(1)), 중복 Key 불가능
- 동기화 미지원 (멀티스레드 환경에서 안전하지 않음)
- LinkedHashMap
- 입력된 순서를 유지하는 HashMap
- HashMap과 성능 비슷하지만, 순서 유지가 필요할 때 사용
- TreeMap
- Key 기준 정렬이 자동으로 수행됨
- Comparable 또는 Comparator를 사용해 정렬 방식 변경 가능
- 이진 탐색 트리 기반으로 O(log N) 성능
- ConcurrentHashMap
- 멀티스레드 환경에서 안전하게 사용할 수 있는 HashMap
- 전체 맵이 아닌 버킷 단위로 동기화하여 성능 저하 최소화
- 멀티스레드 환경에서도 동시 읽기, 쓰기 가능하지만 순서는 보장되지 않음