HashSet은 보통 인터페이스 타입인 Set으로 선언한다.
import java.util.HashSet;
import java.util.Set;
Set<Integer> set = new HashSet<>();
Set은 인터페이스HashSet은 구현체Set<Integer> set = new HashSet<>();
set.add(10);
set.add(20);
set.add(10);
System.out.println(set);
실행 결과:
[10, 20]
true, 이미 존재하면 false를 반환한다.boolean result1 = set.add(30); // true
boolean result2 = set.add(30); // false
특정 값이 존재하는지 확인한다.
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
System.out.println(set.contains(1));
System.out.println(set.contains(3));
실행 결과:
true
false
값을 기준으로 삭제한다.
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.remove(1);
System.out.println(set);
실행 결과:
[2]
false 반환Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
System.out.println(set.size());
실행 결과:
3
중복은 개수에 포함되지 않는다.
Set의 모든 요소를 제거한다.
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.clear();
System.out.println(set);
실행 결과:
[]
Set<Integer> set = new HashSet<>();
System.out.println(set.isEmpty());
set.add(1);
System.out.println(set.isEmpty());
실행 결과:
true
false
HashSet은 인덱스가 없기 때문에 반복문을 사용한다.
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
for (Integer num : set) {
System.out.println(num);
}
실행 결과 (순서 보장 안 됨):
1
2
3
또는
2
1
3
import java.util.Iterator;
Set<Integer> set = new HashSet<>();
set.add(5);
set.add(10);
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
실행 결과:
5
10
(순서는 보장되지 않는다.)
HashSet은 null을 하나 허용한다.
Set<Integer> set = new HashSet<>();
set.add(null);
set.add(null);
System.out.println(set);
실행 결과:
[null]
| 메서드 | 설명 |
|---|---|
| add(E e) | 요소 추가 (중복이면 false 반환) |
| remove(Object o) | 요소 삭제 |
| contains(Object o) | 포함 여부 확인 |
| size() | 요소 개수 반환 |
| clear() | 전체 삭제 |
| isEmpty() | 비어 있는지 확인 |
| iterator() | 반복자 반환 |