Ich suche nach einer sehr einfachen Möglichkeit, ein Set zu erstellen.
Arrays.asList("a", "b" ...)
erstellt eine List<String>
Gibt es etwas Ähnliches für Set
?
java
collections
cahen
quelle
quelle
Antworten:
Mit Java 8 können Sie dies jetzt tun, ohne ein Framework von Drittanbietern zu benötigen:
Siehe Sammler .
Genießen!
quelle
Mit Guava ist es so einfach:
Oder für eine veränderliche Menge:
Weitere Datentypen finden Sie im Guava-Benutzerhandbuch
quelle
Sets.newHashSet("a", "b")
oderSets.newLinkedHashSet("a", "b")
Sets.newLinkedHashSet()
nicht mit dieser Unterschrift, sorrySet<String> mySet = ImmutableSet.of("a", "b");
Du könntest benutzen
quelle
Für die Sonderfälle von Sätzen mit null oder einem Mitglied können Sie Folgendes verwenden:
und:
quelle
java.util.Collections.emptySet()
wird meiner Meinung nach aus Gründen der Typensicherheit EMPTY_SET vorgezogen. Aus den Kommentaren in der Collections-Klasse:Unlike the like-named field, this method is parameterized.
Wie andere gesagt haben, verwenden Sie:
Der Grund, warum dies in Java nicht existiert, ist, dass
Arrays.asList
eine Liste mit fester Größe zurückgegeben wird, mit anderen Worten:Kehrt zurück:
Es gibt keine JDK-Implementierung einer "festen Größe"
Set
innerhalb derArrays
Klasse. Warum willst du das? ASet
garantiert, dass es keine Duplikate gibt, aber wenn Sie sie von Hand eingeben, sollten Sie diese Funktionalität nicht benötigen ... undList
verfügt über mehr Methoden. Beide Schnittstellen erweiternCollection
undIterable
.Verwenden Sie, wie andere gesagt haben, Guave, wenn Sie diese Funktionalität wirklich wollen - da sie nicht im JDK enthalten ist. Informationen dazu finden Sie in ihren Antworten (insbesondere in der Antwort von Michael Schmeißer).
quelle
In Java 9 wurde eine ähnliche Funktion über Factory-Methoden hinzugefügt:
(Es gibt auch Äquivalente für
List
.)quelle
Nein, aber du kannst es so machen
quelle
In Guave könnte man verwenden
newHashSet
quelle
Hier ist eine kleine Methode, die Sie verwenden können
quelle
Eine andere Möglichkeit, dies mit Java 8 und Enums zu tun, wäre:
Siehe EnumSet .
Ich würde eine Leistungsanalyse zwischen diesem Ansatz und empfehlen
Denn wenn Sie mehr als fünf Elemente haben, gibt das Javadoc der Methode an, dass es sich möglicherweise um Leistungsprobleme handelt, wie Sie im Javadoc von Set.Of (E, E ...) sehen können .
quelle