Un moyen efficace de comparer de grandes listes pour trouver des différences
La méthode Except
est le meilleur choix lorsqu'il s'agit de comparaisons différentielles de très grandes listes génériques. Cette méthode est beaucoup plus efficace que la requête LINQ fournie dans l'article (la complexité temporelle est O(N * M)).
Utiliser la méthode Sauf
La méthodeExcept
renvoie une nouvelle liste contenant des éléments de la première liste qui ne sont pas présents dans la deuxième liste. Utilisez cette méthode avec les deux listes pour obtenir deux nouvelles listes :
<code>var firstNotSecond = list1.Except(list2).ToList(); var secondNotFirst = list2.Except(list1).ToList();</code>
La complexité temporelle de cette méthode est O(N M), ce qui est nettement plus rapide que la méthode précédente.
Fusionner les résultats
Pour déterminer si deux listes sont identiques, vous pouvez fusionner les deux listes de résultats :
<code>return !firstNotSecond.Any() && !secondNotFirst.Any();</code>
Notes sur les éléments répétitifs
Contrairement au code d'origine, la méthode Except
ne signale qu'une seule fois les éléments en double dans la liste. Par exemple, si list1 contient [1, 2, 2, 2, 3] et list2 contient [1], alors en utilisant la méthode Except
, le résultat de « éléments dans list1 mais pas dans list2 » sera [2, 3 ] , alors que le code original indiquerait [2, 2, 2, 3].
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!