Dernière modification : 11/11/2022

Suppression des doublons d'une liste - Java

 

Nous allons voir rapidement comment supprimer facilement des doublons dans une liste Java, en utilisant du code natif et Guava ensuite.

Liste initiale utilisée dans la suite de l'article :

final List listWithDuplicates = Lists.newArrayList(1, 1, 4, 2, 4, 5);

 

1. Suppression des doublons avec du code natif

Utilisation d'un Set ne respectant pas l'ordre d'apparition des éléments de la liste initiale :

final List listWithoutDuplicates = new ArrayList<>(new HashSet<>(listWithDuplicates));
System.out.println(listWithoutDuplicates); // [1, 2, 4, 5]

 

Utilisation d'un Set respectant l'ordre d'apparition des éléments de la liste initiale :

final List listWithoutDuplicates = new ArrayList<>(new LinkedHashSet<>(listWithDuplicates));
System.out.println(listWithoutDuplicates); // [1, 4, 2, 5]

 

Utilisation de l'API Stream (l'ordre est conservé) :

final List listWithoutDuplicates = listWithDuplicates.stream().distinct().toList(); // >= Java 16
final List listWithoutDuplicates = listWithDuplicates.stream().distinct().collect(Collectors.toList()); //  >= Java 8

System.out.println(listWithoutDuplicates); // [1, 4, 2, 5]

 

2. Suppression des doublons avec Guava

Utilisation d'un Set Guava ne respectant pas l'ordre d'apparition des éléments de la liste initiale :

final List listWithoutDuplicates = Lists.newArrayList(Sets.newHashSet(listWithDuplicates));
System.out.println(listWithoutDuplicates); // [1, 2, 4, 5]

 

Utilisation d'un Set Guava respectant l'ordre d'apparition des éléments de la liste initiale :

final List listWithoutDuplicates = Lists.newArrayList(Sets.newLinkedHashSet(listWithDuplicates));
System.out.println(listWithoutDuplicates); // [1, 4, 2, 5]