자료구조

TreeSet vs HashSet vs LinkedHashSet

Stitchhhh 2025. 4. 30. 13:26

TreeSet vs HashSet vs LinkedHashSet

항목  TreeSet  HashSet  LinkedHashSet
기반 자료구조 Red-Black Tree (이진 탐색 트리) Hash Table Hash Table + Linked List
정렬 여부 ✅ 자동 정렬 (오름차순) ❌ 없음 ❌ 없음
삽입 순서 유지 ❌ 유지되지 않음 ❌ 유지되지 않음 ✅ 유지됨
중복 허용
null 허용 ❌ (예외 발생) ✅ 하나 가능 ✅ 하나 가능
시간 복잡도 (삽입/삭제/탐색) O(log n) O(1) 평균 O(1) 평균
부분 집합(subSet), 범위 검색 ✅ 지원
Iterator 순회 순서 정렬 순 예측 불가 삽입 순서 유지
사용 추천 상황 정렬/범위 탐색이 필요한 경우 빠른 삽입/탐색이 필요한 경우 순서를 기억하면서 빠른 성능이 필요한 경우

상황별 추천

정렬된 값이 필요할 때 TreeSet
가장 빠른 탐색이 중요할 때 HashSet
삽입 순서를 유지하며 탐색도 빠르게 하고 싶을 때 LinkedHashSet

주의사항 정리

  • TreeSet은 null 값 저장 불가, 삽입하려 하면 NullPointerException
  • HashSet과 LinkedHashSet은 null 1개 저장 가능
  • TreeSet은 정렬과 비교가 가능한 타입만 저장 가능 (Comparable 또는 Comparator 필요)
  • LinkedHashSet은 내부적으로 이중 연결 리스트를 사용하여 순서를 기억하지만, 그만큼 메모리 사용량은 HashSet보다 크다.

 

'자료구조' 카테고리의 다른 글

LinkedHashMap - Java  (2) 2025.05.01
HashMap - Java  (2) 2025.05.01
LinkedHashSet - Java  (0) 2025.04.30
HashSet - Java  (0) 2025.04.30
TreeSet - Java  (0) 2025.04.30