Konvertieren zwischen einer Liste und einem Satz in Java

1. Übersicht

In diesem kurzen Artikel werfen wir einen Blick auf die Konvertierung zwischen einer Liste und einem Satz - beginnend mit Plain Java, mit Guava und der Apache Commons Collections-Bibliothek und schließlich mit Java 10.

Dieser Artikel ist Teil der Reihe „Java - Back to Basic“ hier auf Baeldung.

2. Liste in Set konvertieren

2.1. Mit einfachem Java

Beginnen wir mit der Konvertierung von einer Liste in eine Gruppe mit Java :

public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() { List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5); Set targetSet = new HashSet(sourceList); }

Wie Sie sehen, ist der Konvertierungsprozess typsicher und unkompliziert, da die Konstruktoren jeder Sammlung eine andere Sammlung als Quelle akzeptieren.

2.2. W ith Guava

Lassen Sie uns dieselbe Konvertierung mit Guava durchführen:

public void givenUsingGuava_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = Sets.newHashSet(sourceList); }

2.3. Mit Apache Commons-Sammlungen

Verwenden Sie als Nächstes die Commons Collections-API, um zwischen einer Liste und einem Satz zu konvertieren :

public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = new HashSet(6); CollectionUtils.addAll(targetSet, sourceList); }

2.4. Mit Java 10

Eine weitere Option ist die Verwendung der in Java 10 eingeführten statischen Factory-Methode Set.copyOf :

public void givenUsingJava10_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = Set.copyOf(sourceList); }

Beachten Sie, dass ein auf diese Weise erstelltes Set nicht geändert werden kann.

3. Set in Liste konvertieren

3.1. Mit einfachem Java

Lassen Sie uns nun die umgekehrte Konvertierung - von einem Set in eine Liste - mit Java durchführen :

public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = new ArrayList(sourceSet); }

3.2. Mit Guave

Und die Guavenlösung:

public void givenUsingGuava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = Lists.newArrayList(sourceSet); } 

Sehr ähnlich dem Java-Ansatz, nur mit etwas weniger dupliziertem Code.

3.3. Mit Apache Commons-Sammlungen

Sehen wir uns nun die Commons Collections-Lösung zum Konvertieren zwischen einem Set und einer Liste an :

public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = new ArrayList(6); CollectionUtils.addAll(targetList, sourceSet); }

3.4. Mit Java 10

Schließlich können wir die List.copyOf verwenden , die in Java 10 eingeführt wurde:

public void givenUsingJava10_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = List.copyOf(sourceSet); }

Wir müssen bedenken, dass eine resultierende Liste nicht modifizierbar ist.

4. Fazit

Die Implementierung all dieser Beispiele und Codefragmente finden Sie auf GitHub - dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.