728x90
반응형
Java에서 HashMap과 HashSet은 모두 해시 기반의 자료구조이지만, 용도와 동작 방식에 차이가 있습니다. HashMap은 키-값(Key-Value) 쌍을 저장하는 자료구조이고, HashSet은 중복을 허용하지 않는 데이터 집합을 저장하는 자료구조입니다.
1. HashMap이란?
✅ HashMap 개념
- 키(Key)와 값(Value)의 쌍으로 데이터 저장
- 키는 중복 불가능하지만, 값은 중복 가능
- 빠른 검색 및 조회가 가능 (``)
✅ HashMap 사용 예제
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "Apple");
map.put(2, "Banana");
map.put(3, "Cherry");
map.put(1, "Grapes"); // 키 중복 (기존 값 덮어쓰기)
System.out.println("HashMap 요소: " + map);
}
}
출력 결과:
HashMap 요소: {1=Grapes, 2=Banana, 3=Cherry}
🔹 키 중복이 허용되지 않으며, 같은 키를 사용하면 기존 값이 덮어쓰기됩니다. 🔹 값은 중복 가능하며, 키를 통해 빠르게 접근할 수 있습니다.
2. HashSet이란?
✅ HashSet 개념
- 중복을 허용하지 않는 집합(Set) 자료구조
- 순서 보장 없음
- 빠른 검색이 가능 (``)
✅ HashSet 사용 예제
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("Cherry");
set.add("Apple"); // 중복된 요소 추가
System.out.println("HashSet 요소: " + set);
}
}
출력 결과:
HashSet 요소: [Banana, Cherry, Apple]
🔹 중복된 요소 "Apple"이 자동으로 제거됩니다. 🔹 데이터의 저장 순서가 유지되지 않을 수 있습니다.
3. HashMap vs HashSet 비교
비교 항목HashMapHashSet
| 데이터 저장 방식 | 키-값(Key-Value) 쌍 저장 | 중복 없는 요소 저장 |
| 중복 허용 여부 | 키 중복 불가, 값 중복 가능 | 중복 요소 저장 불가 |
| 순서 보장 여부 | 순서 보장 X | 순서 보장 X |
| 검색 성능 | O(1) (해시 기반 검색) | O(1) (해시 기반 검색) |
| 대표 메서드 | put(), get(), containsKey() | add(), remove(), contains() |
✅ HashMap을 사용할 때
- 키-값 쌍으로 데이터를 저장해야 할 때
- 특정 키를 통해 값을 빠르게 검색해야 할 때
✅ HashSet을 사용할 때
- 중복되지 않는 유일한 데이터 모음을 저장해야 할 때
- 데이터의 존재 여부를 빠르게 확인해야 할 때
결론
- HashMap은 키-값 쌍을 저장하는 자료구조이며, 키를 통해 값을 빠르게 조회할 수 있습니다.
- HashSet은 중복 없는 데이터를 저장하는 자료구조로, 데이터의 존재 여부를 확인하는 데 유용합니다.
- 사용 목적에 따라 적절한 자료구조를 선택하면 효율적인 Java 프로그램을 개발할 수 있습니다. 🚀
728x90
반응형
'IT > JAVA' 카테고리의 다른 글
| Java에서 파일 입출력(IO) 다루기(File, FileReader, FileWriter, BufferedReader, BufferedWriter, FileInputStream, FileOutputStream) (1) | 2025.03.03 |
|---|---|
| Java 스트림(Stream) API와 람다 표현식 (2) | 2025.03.02 |
| Java Collection Framework 개요 (List, Set, Map) (1) | 2025.02.28 |
| Java의 배열(Array)과 리스트(List) 차이점 (0) | 2025.02.27 |
| Java에서 예외 처리하는 방법 (try-catch, throw, finally) (0) | 2025.02.26 |