Entfernen aller Duplikate aus einer Liste in Java
Dieses kurze Tutorial zeigt Ihnenhow to clean up the duplicate elements from a List - zuerst mit einfachem Java, dann mit Guava und schließlich mit einer Java 8 Lambda-basierten Lösung.
Dieser Artikel ist Teil vonthe “Java – Back to Basic” series hier am Beispiel.
1. Entfernen Sie Duplikate mit Plain Java aus einer Liste
Das Entfernen der doppelten Elemente aus einer Liste mit dem Standard-Java-Sammlungsframework ist einfachthrough a 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));
}
Wie Sie sehen, bleibt die ursprüngliche Liste unverändert.
Weitere Lektüre:
Fragen in Vorstellungsgesprächen bei Java Collections
Eine Reihe praktischer Fragen zu Java-Interviews im Zusammenhang mit Collections
Java - Kombinieren Sie mehrere Sammlungen
Eine schnelle und praktische Anleitung zum Kombinieren mehrerer Sammlungen in Java
So finden Sie ein Element in einer Liste mit Java
Sehen Sie sich einige schnelle Möglichkeiten an, um ein Element in einer Liste in Java zu finden
2. Entfernen Sie Duplikate mit Guave 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 von Duplikaten aus einer Liste mit Java 8 Lambdas
Schauen wir uns zum Schluss eine neue Lösung an, die Lambdas in Java 8 verwendet. Wir gehen zuuse the distinct() method from the Stream API, das einen Stream zurückgibt, der aus verschiedenen Elementen besteht, basierend auf dem Ergebnis, das von der Methodeequals() zurückgegeben wird:
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 entfernen.
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 inGitHub project. Dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.