Conversione tra un array e un set in Java

1. Panoramica

In questo breve articolo esamineremo la conversione tra un array e un Set , prima usando semplice java, poi Guava e la libreria Commons Collections da Apache.

Questo articolo fa parte della serie "Java - Back to Basic" qui su Baeldung.

2. Converti array in un set

2.1. Utilizzando Plain Java

Diamo prima un'occhiata a come trasformare l'array in un Set usando Java semplice :

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

In alternativa, il Set può essere prima creato e poi riempito con gli elementi dell'array:

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

2.2. Utilizzando Google Guava

Successivamente, diamo un'occhiata alla conversione Guava da array a Set :

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

2.3. Utilizzo delle collezioni Apache Commons

Infine, eseguiamo la conversione utilizzando la libreria Commons Collection di Apache:

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

3. Converti set in array

3.1. Utilizzando Plain Java

Ora diamo un'occhiata al contrario: convertire un Set esistente in un array :

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

Si noti che toArray (new T [0]) è il modo preferito per utilizzare il metodo rispetto a toArray (new T [size]) . Come dimostra Aleksey Shipilëv nel suo post sul blog, sembra più veloce, più sicuro e più pulito.

3.2. Utilizzando Guava

Avanti - la soluzione Guava:

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

Si noti che stiamo utilizzando l' API Ints di Guava, quindi questa soluzione è specifica per il tipo di dati con cui stiamo lavorando.

4. Conclusione

L'implementazione di tutti questi esempi e frammenti di codice può essere trovata su Github : questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è.