어제 오늘 내일

[Java HashSet] 초기화 방법 총정리 본문

IT/Java

[Java HashSet] 초기화 방법 총정리

hi.anna 2025. 10. 7. 07:15

HashSet은 중복 없는 집합(Set) 자료구조입니다. 보통은 new HashSet<>()만 쓰지만, 상황에 따라 다양한 초기화 방법이 있습니다. 이번 글에서는 HashSet 초기화 패턴을 하나씩 정리해봅니다.

 

1. 기본 생성자

import java.util.HashSet;

public class HashSetInit1 {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("kim");
        set.add("lee");

        System.out.println(set); // [kim, lee]
    }
}

설명: 가장 기본적인 방법으로 비어 있는 Set에 add()를 통해 요소를 넣습니다.

 

2. 초기 용량(capacity) 지정

import java.util.HashSet;

public class HashSetInit2 {
    public static void main(String[] args) {
        // 예상 데이터 개수가 많을 때는 초기 용량을 지정
        HashSet<Integer> set = new HashSet<>(100);

        for (int i = 0; i < 5; i++) {
            set.add(i);
        }
        System.out.println(set); // [0, 1, 2, 3, 4]
    }
}

설명: 대량 데이터를 다룰 때는 초기 용량을 지정하면 리사이즈 비용을 줄일 수 있습니다.

 

3. 컬렉션으로 초기화

import java.util.*;

public class HashSetInit3 {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("kim", "lee", "park");

        HashSet<String> set = new HashSet<>(list);
        System.out.println(set); // [kim, lee, park]
    }
}

설명: 다른 컬렉션(List, Map의 keySet 등)을 이용해 한 번에 초기화할 수 있습니다.

 

4. 이중 중괄호 초기화 (구버전 스타일)

import java.util.HashSet;

public class HashSetInit4 {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>() {{
            add("kim");
            add("lee");
        }};
        System.out.println(set); // [kim, lee]
    }
}

설명: 간단하지만 내부적으로 익명 클래스가 생성되므로 성능/메모리 측면에서 권장되지 않음.

 

5. Java 8+ Stream 이용

import java.util.*;
import java.util.stream.*;

public class HashSetInit5 {
    public static void main(String[] args) {
        HashSet<String> set = Stream.of("kim", "lee", "park")
                                    .collect(Collectors.toCollection(HashSet::new));

        System.out.println(set); // [kim, lee, park]
    }
}

설명: 스트림 API를 이용하면 동적으로 데이터를 가공한 뒤 Set으로 만들 수 있습니다.

 

6. Java 9+ Set.of() 활용

import java.util.Set;

public class HashSetInit6 {
    public static void main(String[] args) {
        Set<String> set = Set.of("kim", "lee", "park");

        System.out.println(set); // [kim, lee, park]
    }
}

설명: Set.of()는 불변(immutable) Set을 생성합니다. 수정이 필요하다면 new HashSet<>(Set.of(...))로 감싸 사용하세요.

 

결론

  • 가장 일반적: new HashSet<>() + add()
  • 대량 데이터 예상 시: 초기 용량 지정
  • 다른 컬렉션 기반: new HashSet<>(list)
  • 불변 집합 필요: Set.of(...)
  • 동적 데이터 가공: Stream + Collectors

 

 

반응형
Comments