Rimozione di tutti i duplicati da un elenco in Java

Questo breve tutorial ti mostrerà come ripulire gli elementi duplicati da un elenco , prima utilizzando Java semplice, poi Guava e infine una soluzione basata su Java 8 Lambda.

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

1. Rimuovere i duplicati da un elenco utilizzando Plain Java

La rimozione degli elementi duplicati da un elenco con il Java Collections Framework standard viene eseguita facilmente tramite un set :

public void givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect() { List listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0); List listWithoutDuplicates = new ArrayList( new HashSet(listWithDuplicates)); assertThat(listWithoutDuplicates, hasSize(4)); }

Come puoi vedere, l'elenco originale rimane invariato.

2. Rimuovere i duplicati da un elenco utilizzando Guava

Lo stesso può essere fatto anche usando Guava:

public void givenListContainsDuplicates_whenRemovingDuplicatesWithGuava_thenCorrect() { List listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0); List listWithoutDuplicates = Lists.newArrayList(Sets.newHashSet(listWithDuplicates)); assertThat(listWithoutDuplicates, hasSize(4)); }

E ancora, l'elenco originale rimane invariato.

3. Rimuovere i duplicati da un elenco utilizzando Java 8 Lambdas

Infine, diamo un'occhiata a una nuova soluzione, utilizzando Lambdas in Java 8; useremo il metodo separate () dall'API Stream che restituisce un flusso costituito da elementi distinti in base al risultato restituito dal metodo equals () :

public void givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() { List listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3); List listWithoutDuplicates = listWithDuplicates.stream() .distinct() .collect(Collectors.toList()); }

Ed ecco fatto: 3 modi rapidi per ripulire tutti gli elementi duplicati da un elenco.

4. Conclusione

Questo articolo ci dimostra quanto sia facile rimuovere i duplicati da un elenco utilizzando Plain Java, Google Guava e Java 8.

L'implementazione di tutti questi esempi e frammenti può essere trovata nel progetto GitHub. Questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire.