Java 8
Wir haben die Möglichkeit, Stream
auch zu verwenden. Wir können Streams auf verschiedene Arten erhalten:
Set<String> set = Stream.of("A", "B", "C", "D").collect(Collectors.toCollection(HashSet::new));
System.out.println(set);
String[] stringArray = {"A", "B", "C", "D"};
Set<String> strSet1 = Arrays.stream(stringArray).collect(Collectors.toSet());
System.out.println(strSet1);
// if you need HashSet then use below option.
Set<String> strSet2 = Arrays.stream(stringArray).collect(Collectors.toCollection(HashSet::new));
System.out.println(strSet2);
Der Quellcode von Collectors.toSet()
zeigt, dass Elemente HashSet
einzeln zu einem hinzugefügt werden , die Spezifikation jedoch nicht garantiert, dass es sich um ein Element handelt HashSet
.
"Es gibt keine Garantie für den Typ, die Veränderlichkeit, die Serialisierbarkeit oder die Thread-Sicherheit des zurückgegebenen Sets."
Daher ist es besser, die spätere Option zu verwenden. Die Ausgabe ist:
[A, B, C, D]
[A, B, C, D]
[A, B, C, D]
Unveränderliches Set (Java 9)
In Java 9 wurde die Set.of
statische Factory-Methode eingeführt, die unveränderliche Mengen für die bereitgestellten Elemente oder das Array zurückgibt.
@SafeVarargs
static <E> Set<E> of(E... elements)
Weitere Informationen finden Sie unter Statische Factory-Methoden für unveränderliche Sets .
Unveränderliches Set (Java 10)
Wir können ein unveränderliches Set auch auf zwei Arten erhalten:
Set.copyOf(Arrays.asList(array))
Arrays.stream(array).collect(Collectors.toUnmodifiableList());
Die Methode verwendet Collectors.toUnmodifiableList()
intern die Set.of
in Java 9 eingeführte Methode . Weitere Informationen finden Sie auch in meiner Antwort .