2017-12-17 14 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コンストラクタに渡したIntegerは、Setの初期容量を表します。その値はSetに追加されません。

あなたは、単一の要素でSetを構築したい場合は、(Javaの9に)使用することができます。

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

(注)このSetは不変になること。

あなたは可変Setをしたい場合、あなたはそのコンストラクタに不変Setを渡すことができます。Java 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

関連する問題