반응형
    
    
    
  
		                                        Notice
		                                        
										
                                    
                                    
                                        Recent Posts
                                        
                                    
                                    
                                        Recent Comments
                                        
                                    
                                    
                                        Link
                                        
                                    
                                | 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
                                        Tags
                                        
                                    
                                    - input
- HashMap
- ArrayList
- 인텔리제이
- 배열
- map
- CMD
- Eclipse
- 이탈리아
- 자바
- 이클립스
- 문자열
- javascript
- Visual Studio Code
- list
- 자바스크립트
- js
- Java
- json
- table
- string
- Button
- 정규식
- Array
- html
- IntelliJ
- vscode
- replace
- CSS
- date
                                        Archives
                                        
                                    
                                    - Today
- Total
어제 오늘 내일
[Java HashSet] 초기화 방법 총정리 본문
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
반응형
    
    
    
  'IT > Java' 카테고리의 다른 글
| [Java LinkedHashSet] 주요 메소드 정리 및 활용 예제 (0) | 2025.10.08 | 
|---|---|
| [Java HashSet] 주요 메소드 정리 및 활용 예제 (0) | 2025.10.08 | 
| [Java HashMap] 초기화 방법 총정리 (0) | 2025.10.07 | 
| [Java StringTokenizer] 주요 메소드 정리와 활용 예제 (0) | 2025.10.06 | 
| [Java Scanner] 주요 메소드 정리와 활용 예제 (0) | 2025.10.06 | 
                              Comments