Supprimer tous les doublons d’une liste en Java

Supprimer tous les doublons d'une liste en Java

Ce tutoriel rapide va vous montrerhow to clean up the duplicate elements from a List - d'abord en utilisant Java brut, puis Guava et enfin une solution basée sur Java 8 Lambda.

Cet article fait partie dethe “Java – Back to Basic” series ici par exemple.

1. Supprimer les doublons d'une liste à l'aide de Java brut

La suppression des éléments en double d'une liste avec le Java Collections Framework standard se fait facilementthrough 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));
}

Comme vous pouvez le constater, la liste d'origine reste inchangée.

Lectures complémentaires:

Questions d'entretiens chez Java Collections

Un ensemble de questions pratiques sur les entretiens avec Java relatives aux collections

Read more

Java - Combiner plusieurs collections

Un guide rapide et pratique pour combiner plusieurs collections en Java

Read more

Comment trouver un élément dans une liste avec Java

Découvrez quelques moyens rapides pour rechercher un élément dans une liste en Java.

Read more

2. Supprimer les doublons d'une liste à l'aide de Guava

La même chose peut être faite avec 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));
}

Et encore une fois, la liste originale reste inchangée.

3. Supprimer les doublons d'une liste à l'aide de Java 8 Lambdas

Enfin, examinons une nouvelle solution, utilisant Lambdas dans Java 8; nous allons versuse the distinct() method from the Stream API qui retourne un flux composé d'éléments distincts en fonction du résultat renvoyé par la méthodeequals():

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

Et voilà: 3 façons rapides de nettoyer tous les éléments en double d'une liste.

4. Conclusion

Cet article nous montre à quel point il est facile de supprimer les doublons d’une liste à l’aide de Plain Java, Google Guava et Java 8.

L'implémentation de tous ces exemples et extraits peut être trouvée dans lesGitHub project. Ceci est un projet basé sur Maven, il devrait donc être facile à importer et à exécuter.