반응형
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
- 이클립스
- HashMap
- 자바
- replace
- CMD
- table
- javascript
- string
- IntelliJ
- map
- 이탈리아
- vscode
- js
- Button
- json
- Eclipse
- Visual Studio Code
- Array
- date
- 정규식
- CSS
- input
- 배열
- ArrayList
- 문자열
- list
- html
- 인텔리제이
- Java
- 자바스크립트
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