私は今、ラフセットに関連する何かに取り組んでいます。このプロジェクトでは、多くのセット操作と操作を使用します。セット操作のストップギャップ対策として文字列操作を使用してきました。アルゴリズムを介して、信じられないほどの量のデータ (それぞれ約 40 列以上の 500,000 レコード) を処理する必要があるまでは、問題なく機能しました。
.net 2.0 にはセット データ構造がないことを知っています (私がプロジェクトを開始したときは 2.0 が最新でした)。構造。
ありがとう 。
私は今、ラフセットに関連する何かに取り組んでいます。このプロジェクトでは、多くのセット操作と操作を使用します。セット操作のストップギャップ対策として文字列操作を使用してきました。アルゴリズムを介して、信じられないほどの量のデータ (それぞれ約 40 列以上の 500,000 レコード) を処理する必要があるまでは、問題なく機能しました。
.net 2.0 にはセット データ構造がないことを知っています (私がプロジェクトを開始したときは 2.0 が最新でした)。構造。
ありがとう 。
.NET 3.5 には、ネイティブ セット データ型HashSetが既にあります。操作については、 HashSet および LINQ の set 演算子も参照してください。
.NET 1.0 には、サード パーティの Set データ型であるIesi.Collectionsがありました。これは、 Iesi.Collections.Genericを使用して .NET 2.0 ジェネリックで拡張されました。
それらすべてを試してみて、どれが最もメリットがあるかを確認することをお勧めします. :)
LINQ は、いくつかの集合演算をサポートしています。例については、 LINQ 101 ページを参照してください。
クラスHashSet (.NET 3.5)もあります。
.NET でのセット操作に関する Microsoft のガイドラインは次のとおりです。
HasSet クラスでサポートされている集合操作のリスト:
更新: これは .Net 2.0 用です。.Net 3.5 については、aku、Jon の投稿を参照してください。
これは、.Net でセットを効率的に表現するための優れたリファレンスです。
C5を見る価値があるかもしれません。これは、セットを含む .NET 用の汎用コレクション ライブラリです。
あまり詳しく調べていませんが、かなり素晴らしいコレクション ライブラリのようです。
.NET 3.5 でHashSetを試してください。
.NET BCL チームのメンバーによるこのページには、HashSet の意図に関する有益な情報があります。
私は、.NET 2.0 の Dictionary クラスをセットとして悪用してきました。
private object dummy = "ok";
public void Add(object el) {
dict[el] = dummy;
}
public bool Contains(object el) {
return dict.ContainsKey(el);
}
C# 3.0 では、Linq to Objects を使用できます。
F# を歌うことについて考えたことはありますか? これは、関数型プログラミング言語の仕事のようです。
C5 Generic Collection Libraryをご覧ください。このライブラリは、不足している構造を提供し、既存のものを適切に設計されたインターフェイスとジェネリック クラスのセットで置き換えることにより、.NET クラス ライブラリの穴を修正するための体系的なアプローチです。
とりわけ、HashSet<T>
線形ハッシュに基づくジェネリック Set クラスがあります。