2017-12-17 13 views
-4

int로 HashSet을 초기화하려고했지만 작동하지 않았습니다.정수를 HashSet 생성자에 보낼 수 없습니다.

public class HelloWorld 
{ 
    // arguments are passed using the text field below this editor 
    public static void main(String[] args) 
    { 
    Set<Integer> a = new HashSet<Integer>(123456); 
    a.add(55); 
    System.out.println(a); 
    } 
} 

출력 : [55]

이 왜 일어나고 어떻게 내가 HashSet의 생성자에 단일의 int를 보낼 수 있습니까?

감사합니다.

+5

'새로운 HashSet (123456)'은 어떻게 생각하십니까? Javadoc을 읽었습니까? –

+0

첫 번째 요소로 123456을 추가하십시오 ...? –

+1

Javadoc을 읽으십시오. –

답변

3

HashSet 생성자에 전달하는 IntegerSet의 초기 용량을 나타냅니다. 이 값은 Set에 추가되지 않습니다. 당신은 하나의 요소와 Set를 구성하려면

, 당신은 (자바 9)를 사용할 수 있습니다 :이 Set는 불변 될 것

Set<Integer> a = Set.of(123456); 

참고.

당신이 변경 가능한 Set을 원하는 경우에, 당신은 그것의 생성자에 불변 Set을 전달할 수 있습니다 자바 7,

Set<Integer> a = new HashSet<>(Set.of(123456)); 

또는 :

Set<Integer> myset = new HashSet<>(Arrays.asList(123456)); 
+0

Java 7에서 무엇을 할 수 있습니까? –

+0

@ J.Doe'Arrays.asList'를 사용하여'List'를 생성하고'List'를'HashSet' 생성자에 전달할 수 있습니다. – Eran

+0

감사합니다. 많이 도와 줬어! –

1

HashSet(int) 생성자는 당신이 초기를 지정할 수 있습니다 용량.

요소를 초기화하려면 HashSet(Colletion) 생성자를 사용해야합니다. 예 :

Set<Integer> a = new HashSet<>(Collections.singleton(123456)); 
+0

HashSet 생성자에 단일 요소를 전달하는 유일한 방법은 무엇입니까? –

+0

@ J.Doe'Collections.singletonList','Arrays.asList' 또는 Java 9의'Set.of'와 같은 다른 콜렉션을 사용할 수 있지만, 어떤 종류의 콜렉션을 사용해야 할 것입니다. – Mureinik