Entfernen aller Duplikate aus einer Liste in Java

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

Read more

Java - Kombinieren Sie mehrere Sammlungen

Eine schnelle und praktische Anleitung zum Kombinieren mehrerer Sammlungen in Java

Read more

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

Read more

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.