728x90
반응형
SMALL
안녕하세요😊 코드카인 여러분!
오늘은 Java에서 자주 사용되는 HashSet, LinkedHashSet, TreeSet에 대해 알아보려 합니다. 일상 속에서 흔히 볼 수 있는 "물건 정리 방법"에 비유해 설명할게요. 세 가지 모두 Set 인터페이스를 구현하지만, 각기 다른 특징을 가지고 있어요. 🛠️
🎯 HashSet: 빠르고 효율적인 물건 보관함
HashSet은 일상생활에서 "물건을 아무 순서 없이 빠르게 꺼낼 수 있는 서랍장"과 같아요.
- 특징 :
- 중복을 허용하지 않아요. (유일성 보장)
- 정렬되지 않은 상태로 저장돼요.
- 빠른 검색 성능을 제공합니다. (O(1) 접근 시간)
사용 예시:
- 중복 없는 학번 리스트 관리
- 중복 제거 후 데이터 저장
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
HashSet<String> items = new HashSet<>();
items.add("사과");
items.add("바나나");
items.add("사과"); // 중복 추가 시 무시됨
System.out.println(items); // [바나나, 사과] (순서는 랜덤)
}
}
🎯 LinkedHashSet: 순서를 기억하는 노트
LinkedHashSet은 "작성된 순서를 기억하는 노트" 같아요.
- 특징 :
- 삽입 순서를 유지합니다.
- 중복 허용하지 않아요.
- HashSet보다 약간 느릴 수 있지만, 순서 보존이 필요할 때 유용해요.
사용 예시:
- 입력 순서대로 유지해야 하는 상품 목록
- 중복 없는 방문 기록 저장
import java.util.LinkedHashSet;
public class Main {
public static void main(String[] args) {
LinkedHashSet<String> items = new LinkedHashSet<>();
items.add("사과");
items.add("바나나");
items.add("딸기");
System.out.println(items); // [사과, 바나나, 딸기]
}
}
🎯 TreeSet: 잘 정돈된 책장
TreeSet은 "항상 알파벳 순서대로 정렬된 책장"과 유사합니다.
- 특징 :
- 자동 정렬(오름차순 또는 사용자 정의 정렬) 지원
- 중복 허용되지 않아요.
- 검색, 추가, 삭제 성능은 O(log n)으로 효율적이에요.
사용 예시:
- 알파벳 순으로 학생 이름 저장
- 정렬된 고유값 저장
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<String> items = new TreeSet<>();
items.add("바나나");
items.add("사과");
items.add("딸기");
System.out.println(items); // [사과, 딸기, 바나나] (오름차순 정렬)
}
}
🚀 HashSet, LinkedHashSet, TreeSet 비교
특징 | HashSet | LinkedHashSet | TreeSet |
---|---|---|---|
중복 허용 | ❌ | ❌ | ❌ |
순서 유지 | ❌ | ✅ (삽입 순서) | ✅ (정렬 순서) |
성능 | O(1) | O(1) | O(log n) |
정렬 | ❌ | ❌ | ✅ |
😊 마무리하며..
HashSet, LinkedHashSet, TreeSet은 데이터의 고유성을 보장하면서 상황에 따라 다르게 사용할 수 있어요. 📝
어떤 Set을 사용할지 고민된다면 아래처럼 선택해보세요:
- 빠른 서치가 중요하다면 👉 HashSet
- 순서 유지가 필요하다면 👉 LinkedHashSet
- 정렬된 데이터가 필요하다면 👉 TreeSet
728x90
반응형
SMALL
'JAVA > Java Collection Framwork' 카테고리의 다른 글
HashMap vs LinkedHashMap vs TreeMap, 이게 차이라고? - 코드카인 티스토리 (0) | 2024.12.18 |
---|---|
Java 자료구조 완벽 이해: ArrayList, LinkedList, Vector의 모든 것 - 코드카인 티스토리 (0) | 2024.12.18 |