Maison >développement back-end >C++ >Comment puis-je fusionner efficacement deux listes, supprimer les doublons et maintenir l'ordre ?

Comment puis-je fusionner efficacement deux listes, supprimer les doublons et maintenir l'ordre ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-27 05:54:13934parcourir

How Can I Efficiently Merge Two Lists, Removing Duplicates, and Maintaining Order?

Fusionner des listes pour un résultat concaténé

Dans ce scénario, vous disposez de deux listes de chaînes (ou de tout type arbitraire) et souhaitez les combiner rapidement tout en conservant l'original commande. De plus, vous souhaitez éliminer toutes les entrées en double dans la liste fusionnée. Malgré vos recherches sur ce sujet, vous n'avez pas identifié de solution simple et préférez éviter d'implémenter des interfaces complexes.

Une approche efficace consiste à utiliser la méthode AddRange :

List<string> a = new List<string>();
List<string> b = new List<string>();

a.AddRange(b);

Cette approche préserve l'ordre des éléments dans les deux listes, transférant le contenu de b dans a. Cependant, elle ne supprime pas les doublons.

Une option alternative qui résout le problème de duplication est la méthode Union :

var newList = a.Except(b).ToList();

Cette ligne combine les éléments de a et b, en excluant les doublons. Le résultat est stocké dans une nouvelle liste nommée newList.

Enfin, si vous devez conserver les listes d'origine, vous pouvez utiliser la méthode Concat :

var newList = a.Concat(b);

Cette opération produit un objet IEnumerable . Il parcourt les deux listes, produisant séquentiellement leurs éléments dans l'ordre dans lequel ils apparaissent. Si vous avez besoin d'une liste comme sortie, vous pouvez convertir le IEnumerable en liste à l'aide de la méthode ToList.

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!

Déclaration:
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