質問

それ以外のLINQかを使用してネット収集の頻度分布を計算するための高速/簡単な方法はありますか?

たとえば:Anが任意の長さのリストは、多くの繰り返しが含まれています。繰り返しを追跡/リストとカウントを歩くの巧妙な方法は何でしょうか。

役に立ちましたか?

解決

、およびそれぞれをインクリメント

は最も簡単な方法は、ハッシュマップを使用して、いずれかのキーと値を使用し、値をインクリメント、またはバケットサイズ( - - 10、バケット2 = 11 20等バケット1 = 1)を選択することです値によってバケットます。

そして、あなたが通過し、周波数を決定することができます。

他のヒント

リスト内の重複する項目を見つけるための最も簡単な方法は、それはこのように、グループになります。

var dups = list.GroupBy(i => i).Where(g => g.Skip(1).Any());

(執筆Skip(1).Any()が速く、それは各グループから二つ以上のアイテムを横断する必要はありませんので、(()> 1)をカウントします。listの列挙が遅い場合を除きしかし、違いはおそらくごくわずかである以上でなければなりません)
C5ジェネリックコレクションライブラリには計数により重複を受け入れるHashBag実装を持っています。次の擬似コードは、あなたが探しているもの、あなたを得るでしょう。

var hash = new HashBag();
hash.AddAll(list);
var mults = hash.ItemMultiplicities();
その後、リスト項目がキーであり、多重度が値であるKが含まれますmultsIDictionary<K,int>はあなたのリスト内のアイテムの種類がある)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top