record logo record

HashSet 이란

자바 Collection 중 Set의 대표적인 HashSet 클래스를 다루어 보도록 하겠습니다.

Set 인터페이스

클래스
특징
HashSet 순서가 필요없는 데이터 를 hash table에 저장. Set 중에 가장 성능이 좋음
TreeSet 저장된 데이터의 값에 따라 정렬됨. red-black tree 타입으로 값이 저장. HashSet보다 성능이 느림
LinkedHashSet 연결된 목록 타입으로 구현된 hash table에 데이터 저장. 저장된 순서에 따라 값이 정렬. 셋 중 가장 느림

HashSet 예시

import java.util.HashSet;

...(중략)...

public static void main(String[] args) {
		HashSet<Integer> set = new HashSet<>();
		
		set.add(1); // 데이터 1 추가
		set.add(2); // 데이터 2 추가
		set.add(3); // 데이터 3 추가
		
		System.out.println(set.size()); // HashSet size : 3

		while(set.iterator().hasNext()) {
			int num = set.iterator().next(); // num: 1 -> 2 -> 3
			set.remove(num); // num 데이터 삭제
			System.out.println(num);
		}

        set.add(4) // 데이터 4 추가
        System.out.println(set.size()); // HashSet size : 1

        set.clear(); // 모든 데이터 삭제
		System.out.println(set.size()); // HashSet size : 0
	}