HashSet 사용법과 주요 메서드 정리

revo·2026년 2월 15일

자바

목록 보기
14/30
post-thumbnail

1. HashSet 기본 사용법

1-1. 선언과 생성

HashSet은 보통 인터페이스 타입인 Set으로 선언한다.

import java.util.HashSet;
import java.util.Set;

Set<Integer> set = new HashSet<>();
  • Set은 인터페이스
  • HashSet은 구현체

2. 요소 추가: add()

2-1. 기본 사용

Set<Integer> set = new HashSet<>();

set.add(10);
set.add(20);
set.add(10);

System.out.println(set);

실행 결과:

[10, 20]
  • 중복 값(10)은 한 번만 저장된다.
  • add()는 성공하면 true, 이미 존재하면 false를 반환한다.
boolean result1 = set.add(30);  // true
boolean result2 = set.add(30);  // false

3. 요소 확인: contains()

특정 값이 존재하는지 확인한다.

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
  • 평균 시간 복잡도: O(1)
  • 빠른 탐색이 HashSet의 핵심 장점이다.

4. 요소 삭제: remove()

값을 기준으로 삭제한다.

Set<Integer> set = new HashSet<>();

set.add(1);
set.add(2);

set.remove(1);

System.out.println(set);

실행 결과:

[2]
  • 존재하지 않는 값을 삭제하면 false 반환
  • 인덱스 삭제 개념은 없다

5. 전체 요소 개수: size()

Set<Integer> set = new HashSet<>();

set.add(1);
set.add(2);
set.add(3);

System.out.println(set.size());

실행 결과:

3

중복은 개수에 포함되지 않는다.


6. 비우기: clear()

Set의 모든 요소를 제거한다.

Set<Integer> set = new HashSet<>();

set.add(1);
set.add(2);

set.clear();

System.out.println(set);

실행 결과:

[]
  • 객체는 그대로 유지
  • 내부 데이터만 제거

7. 비어 있는지 확인: isEmpty()

Set<Integer> set = new HashSet<>();

System.out.println(set.isEmpty());

set.add(1);

System.out.println(set.isEmpty());

실행 결과:

true
false

8. 반복문으로 순회하기

HashSet은 인덱스가 없기 때문에 반복문을 사용한다.

8-1. 향상된 for문

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

8-2. Iterator 사용

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

(순서는 보장되지 않는다.)


9. null 값 처리

HashSet은 null을 하나 허용한다.

Set<Integer> set = new HashSet<>();

set.add(null);
set.add(null);

System.out.println(set);

실행 결과:

[null]
  • null도 하나의 값으로 취급된다.
  • 두 번 추가해도 하나만 저장된다.

10. 핵심 메서드 정리

메서드설명
add(E e)요소 추가 (중복이면 false 반환)
remove(Object o)요소 삭제
contains(Object o)포함 여부 확인
size()요소 개수 반환
clear()전체 삭제
isEmpty()비어 있는지 확인
iterator()반복자 반환

정리

  • HashSet은 중복을 허용하지 않는다.
  • 인덱스가 없다.
  • 순서를 보장하지 않는다.
  • 빠른 탐색이 장점이다.

0개의 댓글