• (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조
• 내부적으로 배열(버킷)을 사용하여 데이터를 저장
• 해시 테이블은 각각의 Key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색
ex) nosql의 redis 의 구조도 hash 구조로 되어있다
HashSet<String> 이름 = new HashSet<>();| add(E e) | 요소 추가 (중복된 값이면 무시) |
| remove(Object o) | 특정 요소 제거 |
| contains(Object o) | 특정 요소가 포함되어 있는지 확인 (검색) |
| isEmpty() | 집합이 비어 있는지 확인 |
| size() | 집합에 있는 요소의 개수 반환 |
| clear() | 집합의 모든 요소 제거 |
| iterator() | 요소를 순회하기 위한 Iterator 반환 |
💡
map 을 활용하는 법 익히기
LinkedHashSet , TreeSet 개념 분리 하기 ( 헷깔림 )
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
// HashSet 생성
HashSet<String> set = new HashSet<>();
// 요소 추가
set.add("Apple");
set.add("Banana");
set.add("Cherry");
set.add("Apple"); // 중복된 요소는 추가되지 않음
System.out.println("HashSet 내용: " + set); // 순서는 보장되지 않음
//HashSet 내용: [Cherry, Apple, Banana]
// 요소 포함 여부 확인
System.out.println("Banana가 포함되어 있나요? " + set.contains("Banana"));
//Banana가 포함되어 있나요? true
// 요소 제거
set.remove("Banana");
System.out.println("Banana 제거 후: " + set);
//Banana 제거 후: [Cherry, Apple]
// 크기 확인
System.out.println("HashSet 크기: " + set.size());
//HashSet 크기: 2
// 모든 요소 제거
set.clear();
System.out.println("HashSet이 비었나요? " + set.isEmpty());
//HashSet이 비었나요? true
}
}
import java.util.HashSet;
public class RemoveDuplicates {
public static void main(String[] args) {
String[] fruits = {"Apple", "Banana", "Apple", "Cherry", "Banana"};
//중복된 객체가 있는 문자열 배열 선언
//HashSet 을 이용한 중복 제거
HashSet<String> uniqueFruits = new HashSet<>();
//빈 HashSet 선언
for (String fruit : fruits) {
//fruits 배열의 문자열 객체들을 fruit 라는 이름으로 뽑아서
uniqueFruits.add(fruit);
//uniqueFruits에 추가 한다
}
System.out.println("중복 제거 결과: " + uniqueFruits);
}. //중복 제거 결과: [Cherry, Apple, Banana]
}
import java.util.HashSet;
import java.util.Iterator;
public class IterateHashSet {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
//HashSet 선언
set.add("Dog");
set.add("Cat");
set.add("Horse");
//요소 추가
// for-each 반복
System.out.println("for-each 반복:");
for (String animal : set) {
//요소들을 animal 로 구분짓고 순회
System.out.println(animal);
}
// Iterator를 이용한 반복
System.out.println("\nIterator 반복:");
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}