1

c#で、数百万の値を持つ可能性がある2つのリストまたはハッシュセット間の共通要素の数を決定するパフォーマンスの高い方法は何ですか?

4

3 に答える 3

7

最高のパフォーマンスは HashSets で利用できるようになります。IntersectWithメソッドを使用できます。

// assuming HashSet<T> hashSetA
//     and an IEnumerable<T> collectionB
hashSetA.IntersectWith(collectionB);

ハッシュセットベースのソリューションは、O(n) のパフォーマンスを提供します。

次善の策は、2 つのリストを並べ替えてから、O(nlogn) のパフォーマンスを生み出す共通の要素を選択して、2 つのリストをロックステップで線形に反復することです。

于 2013-03-28T19:57:59.003 に答える
1

HashSetIntersectWith

HashSet.IntersectWith メソッド

2 つのリストを比較するには、大きい方の HashSet を作成します

HashSet コンストラクター (IEnumerable)

于 2013-03-28T19:58:34.957 に答える
0

例外の使用

2 つのリストの違い

于 2013-03-28T20:01:50.313 に答える