Java 주요 자료구조 비교 정리

HelloPong·2025년 8월 10일

공부

목록 보기
21/39
post-thumbnail

📚 Java 주요 자료구조 비교 정리

Java 컬렉션 프레임워크에는 다양한 자료구조가 있으며,
각각 저장 방식, 정렬 여부, 순서 유지 여부, 성능 특성이 다릅니다.
코딩테스트나 실무에서 문제에 맞는 자료구조를 선택하려면 이 차이를 이해하는 것이 중요합니다.


📊 자료구조 비교표

자료구조Key/Value내부 구조정렬 여부순서 유지평균 접근 속도특징
HashMapKey→Value해시 테이블O(1)빠른 검색
HashSet값만해시 테이블O(1)중복 없음
TreeMapKey→ValueRed-Black Tree정렬O(log N)범위 검색
TreeSet값만Red-Black Tree정렬O(log N)중복 없음 + 범위검색
LinkedHashMapKey→Value해시 + 연결 리스트O(1)삽입 순서 유지
LinkedHashSet값만해시 + 연결 리스트O(1)삽입 순서 유지
PriorityQueue값만Binary Heap❌ (최소/최대만 보장)O(log N)최소/최대 반복 추출 최적
ArrayDeque값만배열삽입순O(1)양쪽 삽입/삭제 빠름

📝 각 자료구조 특징 정리

1. HashMap

  • Key → Value 매핑
  • 평균 접근 속도 O(1) (해시 충돌 시 최악 O(N))
  • 순서 유지 X, 정렬 X
  • 빠른 검색과 삽입이 필요한 경우 사용

2. HashSet

  • 값만 저장, 중복 불가
  • 내부적으로 HashMap의 Key만 사용하는 구조
  • 순서 유지 X, 정렬 X
  • 중복 제거 목적에 적합

3. TreeMap

  • Key 기준 정렬된 상태 유지 (오름차순 기본)
  • 범위 검색, 최솟값/최댓값 검색 용이
  • 접근/삽입/삭제 O(log N)

4. TreeSet

  • 값만 저장, 중복 불가
  • 값 기준 정렬된 상태 유지
  • first(), last(), higher(), lower() 메서드로 범위 검색 가능

5. LinkedHashMap

  • HashMap + 이중 연결 리스트
  • 삽입 순서 유지
  • LRU(Least Recently Used) 캐시 구현 시 유용

6. LinkedHashSet

  • HashSet + 이중 연결 리스트
  • 삽입 순서 유지, 중복 불가

7. PriorityQueue

  • Binary Heap 기반, 최솟값(기본) 또는 최댓값 빠르게 추출
  • 전체 정렬 상태는 보장하지 않음
  • 삽입/삭제 O(log N)
  • 최소/최대 우선순위 작업 반복에 최적

8. ArrayDeque

  • 양쪽 끝에서 O(1)로 삽입/삭제 가능
  • Stack, Queue, Deque 역할 모두 가능
  • 내부는 배열 기반

💡 자료구조 선택 가이드

  • 빠른 검색 + 순서 필요 없음HashMap
  • 중복 없는 집합 + 순서 필요 없음HashSet
  • 정렬된 상태 유지 + 범위 검색TreeMap / TreeSet
  • 입력 순서 유지LinkedHashMap / LinkedHashSet
  • 최소/최대값 반복 추출PriorityQueue
  • 양쪽 끝 조작 빠른 큐/덱ArrayDeque

📌 코딩테스트 팁:

  • Key-Value 저장이 아니라 단순 값 저장이라면 Map보다 Set을 우선 고려
  • 정렬된 상태가 필요하다면 Tree 계열, 필요 없다면 Hash 계열
  • 최소/최대값만 필요하면 PriorityQueue정렬보다 효율적

0개의 댓글