2017-12-17 5 views
-4

Ich habe versucht, HashSet mit int zu initialisieren, aber es hat nicht funktioniert.Kann keine Ganzzahl an HashSet-Konstruktor senden

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); 
    } 
} 

Ausgang: [55]

Warum es passiert und wie kann ich einen einzelnen int HashSet Konstruktor schicken?

Danke!

+5

Was denken Sie, dass 'new HashSet (123456)' tun soll? Hast du den Javadoc gelesen? –

+0

123456 als erstes Element hinzufügen ...? –

+1

Lesen Sie bitte das Javadoc. –

Antwort

3

Die Integer Sie passieren zu der HashSet Konstruktor die Anfangskapazität der Set darstellt. Es fügt diesen Wert dem Set nicht hinzu.

Wenn Sie ein Set mit einem einzelnen Element konstruieren möchten, können Sie (in Java 9) verwenden:

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

Beachten Sie, dass diese Set unveränderlich sein wird.

Wenn Sie eine veränderbare Set wollen, können Sie das unveränderliche Set an den Konstruktor übergeben:

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

Oder in Java 7:

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

Was kann ich in Java 7 tun? –

+0

@ J.Doe Sie können 'Arrays.asList' verwenden, um eine' List' zu erstellen und diese 'List' an den' HashSet'-Konstruktor zu übergeben. – Eran

+0

Danke! Hat mir viel geholfen! –

1

Der HashSet(int) Konstruktor ermöglicht Ihnen, dessen Anfangs angeben Kapazität. Wenn Sie die Elemente initialisieren möchten, müssen Sie den HashSet(Colletion)-Konstruktor verwenden. Zum Beispiel:

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

Ist das die einzige Möglichkeit, ein einzelnes Element an den HashSet-Konstruktor zu übergeben? –

+0

@ J.Doe Sie können andere Sammlungen verwenden, wie zum Beispiel 'Collections.singletonList',' Arrays.asList' oder sogar Java9s 'Set.of', aber Sie müssen eine Sammlung von irgendeiner Art verwenden. – Mureinik

Verwandte Themen