반응형
    
    
    
  
		                                        Notice
		                                        
										
                                    
                                    
                                        Recent Posts
                                        
                                    
                                    
                                        Recent Comments
                                        
                                    
                                    
                                        Link
                                        
                                    
                                | 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
                                        Tags
                                        
                                    
                                    - IntelliJ
- Eclipse
- ArrayList
- 이클립스
- html
- string
- table
- CMD
- 문자열
- replace
- Visual Studio Code
- Java
- Array
- 인텔리제이
- CSS
- list
- 자바스크립트
- js
- 정규식
- date
- input
- HashMap
- map
- json
- 배열
- 자바
- 이탈리아
- Button
- vscode
- javascript
                                        Archives
                                        
                                    
                                    - Today
- Total
어제 오늘 내일
[Java 컬렉션] HashMap vs HashSet vs TreeSet 비교 본문
자바 컬렉션 프레임워크에는 HashMap, HashSet, TreeSet처럼 이름이 비슷하지만 용도가 다른 클래스들이 있습니다. 이번 글에서는 이들의 차이와 활용 포인트를 정리합니다.
1. HashMap
- 구조: 해시 테이블 기반 (Key-Value 저장)
- 중복: Key는 중복 불가, Value는 중복 가능
- 순서: 순서 보장 안 됨
- 시간 복잡도: 평균 O(1) (삽입/검색/삭제)
- 활용: 키-값 매핑, 데이터 캐싱, 빈도수 세기
import java.util.HashMap;
public class HashMapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("kim", 90);
        map.put("lee", 80);
        map.put("park", 95);
        System.out.println(map.get("lee")); // 80
    }
}2. HashSet
- 구조: 내부적으로 HashMap을 사용 (Key만 존재하는 형태)
- 중복: 허용하지 않음
- 순서: 순서 보장 안 됨
- 시간 복잡도: 평균 O(1)
- 활용: 중복 제거, 고유한 데이터 저장
import java.util.HashSet;
public class HashSetExample {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("apple");
        set.add("banana");
        set.add("apple"); // 중복 무시
        System.out.println(set); // [banana, apple] (순서 보장 X)
    }
}3. TreeSet
- 구조: Red-Black Tree 기반 (정렬된 이진 탐색 트리)
- 중복: 허용하지 않음
- 순서: 자동 정렬 (기본 오름차순)
- 시간 복잡도: O(log n)
- 활용: 정렬된 데이터 저장, 범위 검색
import java.util.TreeSet;
public class TreeSetExample {
    public static void main(String[] args) {
        TreeSet<Integer> set = new TreeSet<>();
        set.add(30);
        set.add(10);
        set.add(20);
        System.out.println(set); // [10, 20, 30]
        System.out.println(set.subSet(10, 30)); // [10, 20]
    }
}4. 차이점 요약
| 특징 | HashMap | HashSet | TreeSet | 
| 데이터 저장 | Key-Value 쌍 | Key만 저장 | Key만 저장 | 
| 중복 허용 | Key 중복 불가, Value 중복 가능 | 중복 불가 | 중복 불가 | 
| 순서 | 보장 안 함 | 보장 안 함 | 자동 정렬(기본 오름차순) | 
| 시간 복잡도 | 평균 O(1) | 평균 O(1) | O(log n) | 
| 주요 활용 | 매핑, 빈도수, 캐싱 | 고유 집합 | 정렬된 집합, 범위 검색 | 
결론
- Key-Value 형태가 필요하면 HashMap
- 고유한 값 집합이 필요하면 HashSet
- 정렬된 집합이 필요하면 TreeSet
- 성능이 최우선이면 HashMap/HashSet, 정렬이나 범위 조건이 필요하면TreeSet을 선택
반응형
    
    
    
  'IT > Java' 카테고리의 다른 글
| [Java HashMap] get() vs getOrDefault() 차이와 활용법 (0) | 2025.10.10 | 
|---|---|
| [Java HashSet] 정렬 방법과 활용 예제 (0) | 2025.10.10 | 
| [Java TreeSet] 주요 메소드 정리 및 활용 예제 (0) | 2025.10.09 | 
| [Java LinkedHashSet] 주요 메소드 정리 및 활용 예제 (0) | 2025.10.08 | 
| [Java HashSet] 주요 메소드 정리 및 활용 예제 (0) | 2025.10.08 | 
                              Comments