Détermination des éléments communs à partir de plusieurs listes
En Java, vous pouvez rencontrer le besoin de trouver des éléments communs partagés par plusieurs listes. Cela peut s'avérer utile pour des tâches telles que la comparaison d'ensembles de données ou l'identification d'intersections. Cet article explore une approche efficace pour récupérer les éléments communs entre deux listes à l'aide du framework de collections de Java.
Pour commencer, considérons le scénario dans lequel vous disposez de deux objets ArrayList, chacun contenant trois entiers. Votre objectif est de rechercher et de renvoyer les éléments présents dans les deux listes.
Solution : Collection#retainAll()
L'un des moyens les plus simples d'y parvenir consiste à utiliser la méthode Collection#retainAll(). Cette méthode modifie la collection invoquante en supprimant tous les éléments qui ne sont pas également présents dans le paramètre de collection spécifié.
listA.retainAll(listB);
Après avoir exécuté le code ci-dessus, listA contiendra uniquement les éléments communs à listA et listB. .
Approche alternative : créer une nouvelle collection
Si vous devez conserver le contenu original de listA, vous pouvez créer une nouvelle collection contenant les éléments communs :
List<Integer> common = new ArrayList<>(listA); common.retainAll(listB);
Dans ce cas, la liste commune contiendra uniquement les éléments qui existent à la fois dans listA et listB, tandis que le contenu original de listA reste intact.
Solution basée sur le flux
Java 8 a introduit une puissante API de flux qui fournit une méthode déclarative de traitement et de manipulation des collections. Vous pouvez exploiter la méthode stream#filter() pour filtrer des éléments en fonction d'un prédicat spécifique :
List<Integer> common = listA.stream().filter(listB::contains).toList();
Cette approche basée sur un flux effectue une opération de filtrage sur chaque élément de la listeA, en vérifiant s'il existe dans la listeB à l'aide la méthode contain(). La liste résultante contiendra uniquement les éléments communs entre listA et listB.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!