-1

このトピックでは、2 つの文字列配列の高速な count() 交差 でSome1.Kill.The.DJが、文字列の 2 つの配列の交差を計算するための非常に高速な方法について説明します。

これは :

HashSet<string> arr2Set = new HashSet<string>(arr2);
arr1.Where(x=>arr2Set.Contains(x)).Count();

同じことで、ユニオンはどうですか?

4

1 に答える 1

2

正直なところ、このメソッドは元のメソッドよりも高速である必要はありません。基本的には舞台裏で同じことを行っているからです。

(編集: にもある重複アイテムが含まれている場合でも正しくありません! また、常に高速であるとは限りません: 短い配列で試してみましたが、長い配列で試してみましたが、そうではありませんでした。)arr1arr2

の類似点Union

HashSet<string> arr2Set = new HashSet<string>(arr2);
int unionSize = arr2Set.Count + arr1.Where(x=>arr2Set.Add(x)).Count();

しかし、それは実際には行うことと変わらないはずです

int unionSize = arr1.Union(arr2).Count();

パフォーマンスに不安がある場合は、まずこれをお読みください。このバージョンを試して 2 つのタイミングを合わせると、元のバージョンの方が高速になる可能性があります。私は確かにそうしました。

于 2012-12-18T08:40:07.327 に答える