해시셋(Hash Set)

이동엽·2023년 9월 17일

1. 해시셋(Hash Set)이란?

자바의 HashSet은 Set 인터페이스를 구현한 클래스이다.
HashSet은 중복된 값을 허용하지 않으며 List 등과는 다르게 입력한 순서가 보장되지 않는다.
HashSet의 특징을 정리하면 다음과 같다.

  • 중복된 값을 허용하지 않음
  • 입력한 순서가 보장되지 않음
  • null을 값으로 허용

중복된 값을 허용하지 않는 특징이 있기 때문에 값의 존재 유무를 파악할 때 사용할 수 있다.
HashSet의 내부 코드를 보면 HashMap을 사용해서 구현이 되어 있는 것을 볼 수 있다.



2. 해시셋(Hash Set) 사용법

1. 해시셋 선언

HashSet<Integer> set1 = new HashSet<Integer>(); // HashSet 생성
HashSet<Integer> set2 = new HashSet<>(); // new에서 타입 파라미터 생략 가능
HashSet<Integer> set3 = new HashSet<Integer>(set1); // set1의 모든 값을 가진 HashSet 생성
HashSet<Integer> set4 = new HashSet<Integer>(10); // 초기 용량 지정 
HashSet<Integer> set6 = new HashSet<Integer>(Arrays.asList(1,2,3)); //초기값 지정

2. 해시셋 값 추가, 삭제

HashSet<Integer> set = new HashSet<Integer>();//HashSet생성
set.add(1); //값 추가
set.remove(1); // 값 1 제거 
set.clear(); // 모든 값 제거 

3. 해시셋 크기

HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));//HashSet생성
System.out.println(set.size());//set 크기 : 3

4. 해시셋 비어있는지 확인

HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));
System.out.println(map.isEmpty());// false

5. 해시셋 값 검색

HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));//HashSet생성
System.out.println(set.contains(1)); //set내부에 값 1이 있는지 check : true

6. 해시셋 값 출력

Set 컬렉션을 그냥 출력하게 되면 대괄호로 묶어서 set의 전체값이 출력된다.
Set에는 인덱스로 객체를 가져오는 get(index)메소드가 없다.
대신 전체 객체를 대상으로 한번씩 반복해서 가져오는 반복자 Iterator를 제공한다.

HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));//HashSet생성

System.out.println(set); //전체출력 [1,2,3]
		
Iterator iter = set.iterator();	// Iterator 사용
while(iter.hasNext()) {//값이 있으면 true 없으면 false
    System.out.println(iter.next());
}

아직 이해가 안된 부분

HashSet -> List, List -> HashSet

List<String> list = new ArrayList<>();

Set<String> set = new HashSet<>(list); // list->set

List<String> list = new ArrayList<>(set);// set->list

0개의 댓글