Konvertieren zwischen einem Array und einem Set in Java

1. Übersicht

In diesem kurzen Artikel werden wir uns mit der Konvertierung zwischen einem Array und einem Set befassen - zuerst mit einfachem Java, dann mit Guava und der Commons Collections-Bibliothek von Apache.

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

2. Konvertieren Sie das Array in einen Satz

2.1. Verwenden von Plain Java

Schauen wir uns zunächst an, wie das Array mit einfachem Java in ein Set umgewandelt wird :

@Test public void givenUsingCoreJavaV1_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = new HashSet(Arrays.asList(sourceArray)); }

Alternativ kann das Set zuerst erstellt und dann mit den Array-Elementen gefüllt werden:

@Test public void givenUsingCoreJavaV2_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = new HashSet(); Collections.addAll(targetSet, sourceArray); }

2.2. Verwenden von Google Guava

Schauen wir uns als nächstes die Guava-Konvertierung von Array zu Set an :

@Test public void givenUsingGuava_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = Sets.newHashSet(sourceArray); }

2.3. Verwenden von Apache Commons-Sammlungen

Lassen Sie uns abschließend die Konvertierung mithilfe der Commons Collection-Bibliothek von Apache durchführen:

@Test public void givenUsingCommonsCollections_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = new HashSet(6); CollectionUtils.addAll(targetSet, sourceArray); }

3. Set in Array konvertieren

3.1. Verwenden von Plain Java

Schauen wir uns nun das Gegenteil an - Konvertieren eines vorhandenen Sets in ein Array :

@Test public void givenUsingCoreJava_whenSetConvertedToArray_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); Integer[] targetArray = sourceSet.toArray(new Integer[0]); }

Beachten Sie, dass toArray (neues T [0]) die bevorzugte Methode ist, um die Methode gegenüber toArray (neues T [Größe]) zu verwenden . Wie Aleksey Shipilëv in seinem Blogbeitrag beweist, scheint es schneller, sicherer und sauberer zu sein.

3.2. Guave benutzen

Weiter - die Guavenlösung:

@Test public void givenUsingGuava_whenSetConvertedToArray_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); int[] targetArray = Ints.toArray(sourceSet); }

Beachten Sie, dass wir die Ints- API von Guava verwenden, sodass diese Lösung spezifisch für den Datentyp ist, mit dem wir arbeiten.

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.