Maison > Java > javaDidacticiel > Comment puis-je trouver efficacement des éléments communs dans deux listes Java ?

Comment puis-je trouver efficacement des éléments communs dans deux listes Java ?

Susan Sarandon
Libérer: 2024-12-03 00:16:11
original
489 Les gens l'ont consulté

How Can I Efficiently Find Common Elements in Two Java Lists?

Trouver des éléments communs dans deux listes

Identifier les éléments communs entre deux listes est une exigence courante en programmation. Voici un guide sur la façon dont vous pouvez y parvenir à l'aide de l'API Collection de Java.

Approche 1 : Utilisation de Collection#retainAll()

La méthode Collection#retainAll() peut être utilisé pour modifier une liste existante pour contenir uniquement des éléments également présents dans une autre liste. Cette approche est efficace et concise.

List<Integer> listA = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> listB = new ArrayList<>(Arrays.asList(2, 4, 6));

listA.retainAll(listB);
// The resulting listA will now contain only common elements: [2]
Copier après la connexion

Approche 2 : Création d'une nouvelle liste avec des éléments communs

Pour éviter de modifier les listes d'origine, vous pouvez créer une nouvelle celui qui ne contient que les éléments communs. Cette méthode est légèrement moins efficace mais préserve l'intégrité des listes d'origine.

List<Integer> listA = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> listB = new ArrayList<>(Arrays.asList(2, 4, 6));

List<Integer> common = new ArrayList<>(listA);
common.retainAll(listB);
// The resulting common list will contain only common elements: [2]
Copier après la connexion

Approche 3 : Utilisation des flux Java

Les flux Java offrent une approche plus fonctionnelle pour trouver des éléments communs. En utilisant la méthode Collection#contains(), vous pouvez filtrer les éléments non courants à l'aide de Stream#filter().

List<Integer> listA = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> listB = new ArrayList<>(Arrays.asList(2, 4, 6));

List<Integer> common = listA.stream().filter(listB::contains).toList();
// The resulting common list will contain only common elements: [2]
Copier après la connexion

Conclusion

Ces approches fournissent différentes façons de trouver des éléments communs dans deux listes. Le choix de la méthode dépend d'exigences spécifiques, telles que des considérations de performances ou la nécessité de modifier les listes d'origine.

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