Ich muss eine Set
mit Anfangswerten.
Set<String> h = new HashSet<String>();
h.add("a");
h.add("b");
Gibt es eine Möglichkeit, dies in einer einzigen Codezeile zu tun? Es ist zum Beispiel nützlich für ein endgültiges statisches Feld.
Ich muss eine Set
mit Anfangswerten.
Set<String> h = new HashSet<String>();
h.add("a");
h.add("b");
Gibt es eine Möglichkeit, dies in einer einzigen Codezeile zu tun? Es ist zum Beispiel nützlich für ein endgültiges statisches Feld.
Eine der bequemsten Möglichkeiten ist die Verwendung von generischen Collections.addAll() Methode, die eine Sammlung und Varargs annimmt:
Set<String> h = new HashSet<String>();
Collections.addAll(h, "a", "b");
Ich danke Ihnen! Gut, dass ich weiter unten gelesen habe, imo sollte dies höher eingestuft werden. Dies ist großartig für Java 8 und weniger; kein Kopieren um Arrays und plumpe Streams. Danke!
Dies ist eine großartige Antwort, denn im Gegensatz zu vielen anderen Antworten gibt sie, soweit ich das beurteilen kann, eine abänderbar Fertig ;)
Mit Java 9 können Sie Folgendes tun:
Set.of("a", "b");
und Sie erhalten eine unveränderliche Menge, die die Elemente enthält. Einzelheiten finden Sie in der Oracle Dokumentation der Schnittstelle Set .
Ah. Es ist wahrscheinlich erwähnenswert, dass Sie immer noch Elemente zu einer endgültigen Menge hinzufügen können. Deklarieren Sie die Menge einfach als final, aber fügen Sie Elemente im Konstruktor (oder an anderer Stelle) hinzu, wie Sie es normalerweise tun würden. Einer finalen Sammlung können immer noch Elemente hinzugefügt oder entfernt werden. Nur der Verweis auf die Collection selbst ist final.
+1 zu dem, was Jason Nichols sagte. Vergessen Sie nicht, Collections.unmodifiableSet(...) zu verwenden.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
Für Java 8, Java 9 und Java 10 siehe meine Antwort stackoverflow.com/a/37406054/1216775
2 Stimmen
Die Antwort von Michael Berdyshev ist eigentlich die beste, weil sie die sauberste Art ist, eine abänderbar Set. i_am_zero Answer hat auch eine andere Möglichkeit, ein veränderbares Set zu erstellen, aber es ist ausführlicher/umständlicher [mit Lambda-Streaming]; ansonsten ist i_am_zero Answer die nächstbeste Lösung für die Breite seiner verschiedenen Optionen (über Java-Versionen hinweg).
0 Stimmen
HINWEIS: Einige Antworten lassen den Parameter `new HashSet<T>(int initialCapacity) weg, wenn Sie die Größe der Sammlung bereits kennen, verwenden Sie ihn.