2 votes

Supprimer les doublons de deux listes

J'ai deux listes de chaînes de caractères et je supprime les doublons comme ceci :

List<String> list1 = Arrays.asList("1", "2", "3", "4");
List<String> list2 = Arrays.asList("1", "4", "5", "6");
List<String> duplicates = list1.stream().filter(s -> list2.contains(s)).collect(Collectors.toList());
list1.removeAll(duplicates);
list2.removeAll(duplicates);

Le résultat est donc :

list1 = 2, 3
list2 = 5, 6

Existe-t-il un meilleur moyen d'y parvenir, c'est-à-dire avec moins de déclarations ?

0voto

Przemysław Moskal Points 2863

L'une des possibilités à envisager est de créer Set<String> et y ajouter ces listes. Set ne permet d'ajouter que des valeurs uniques à lui-même, il empêche l'ajout de doublons.

La première façon d'utiliser Set : Créer un Set contenant une intersection des deux listes. L'ajout aux nouvelles listes et l'élimination des doublons n'ont lieu que si vous avez vérifié que chaque objet de la source n'est pas présent dans les listes précédemment créées. Set de doublons.

Deuxième méthode (uniquement si vos listes ne se soucient pas de conserver les doublons - par exemple, dans la première méthode, vous avez deux fois la même valeur) : Créez un Set pour la première et pour la deuxième liste, et y ajouter ces listes et ensuite vérifier les doublons.

Comme je l'ai mentionné dans les commentaires, j'ai peut-être mal compris la question et cherché un "autre" moyen, et non un moyen "plus efficace", de réaliser ce que vous demandez, mais peut-être que cela pourrait néanmoins être utile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X