Konvertieren zwischen einem Array und einem Set in Java

Konvertieren zwischen einem Array und einem Set in Java

1. Überblick

In diesem kurzen Artikel werden wir uns mitconverting between an array and a Set befassen - zuerst mit einfachem Java, dann mit Guava und der Commons Collections-Bibliothek von Apache.

Dieser Artikel ist Teil vonthe “Java – Back to Basic” series hier am Beispiel.

2. Konvertieren SieArray inSet

2.1. Verwenden von Plain Java

Schauen wir uns zunächst an, wieturn the array to a Set using plain Java:

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

Alternativ können dieSet 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. Verwendung von Google Guava

Schauen wir uns als nächstesthe Guava conversion from array to 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 -converting an existing Set to an array:

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

3.2. Mit Guave

Weiter - die Guava-Lö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 dieInts-API von Guava verwenden. Diese Lösung ist also spezifisch für den Datentyp, mit dem wir arbeiten.

3.3 Using Commons Collections

Und zum Schluss - verwandeln wir dieSet mithilfe der Apache Commons Collections-Bibliothek in ein Array:

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

4. Fazit

Die Implementierung all dieser Beispiele und Codefragmentecan be found over on Github - dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.