Entfernen aller Duplikate aus einer Liste in Java

Dieses kurze Tutorial zeigt Ihnen, wie Sie die doppelten Elemente aus einer Liste bereinigen - zuerst mit einfachem Java, dann mit Guava und schließlich mit einer Java 8 Lambda-basierten Lösung.

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

1. Entfernen Sie Duplikate mit Plain Java aus einer Liste

Das Entfernen der doppelten Elemente aus einer Liste mit dem Standard-Java Collections Framework erfolgt einfach über einen Satz :

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)); }

Wie Sie sehen können, bleibt die ursprüngliche Liste unverändert.

2. Entfernen Sie Duplikate mit Guava aus einer Liste

Das gleiche kann auch mit Guava gemacht werden:

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)); }

Auch hier bleibt die ursprüngliche Liste unverändert.

3. Entfernen Sie Duplikate mit Java 8 Lambdas aus einer Liste

Schauen wir uns zum Schluss eine neue Lösung an, die Lambdas in Java 8 verwendet. wir werden die Verwendung distinct () Methode aus dem Stream - API , die einen Strom von zurück basierend auf dem Ergebnis aus verschiedenen Elementen zurückgibt equals () Methode:

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

Und da haben wir es - 3 schnelle Möglichkeiten, um alle doppelten Elemente aus einer Liste zu bereinigen.

4. Fazit

Dieser Artikel zeigt uns, wie einfach wir Duplikate mit Plain Java, Google Guava und Java 8 aus einer Liste entfernen können.

Die Implementierung all dieser Beispiele und Snippets finden Sie im GitHub-Projekt. Dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.