Maison > Java > javaDidacticiel > Comment puis-je rechercher efficacement des éléments communs entre plusieurs listes en Java ?

Comment puis-je rechercher efficacement des éléments communs entre plusieurs listes en Java ?

Mary-Kate Olsen
Libérer: 2024-12-02 03:31:09
original
177 Les gens l'ont consulté

How Can I Efficiently Find Common Elements Between Multiple Lists in Java?

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);
Copier après la connexion

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);
Copier après la connexion

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal