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