5

私は今、ラフセットに関連する何かに取り組んでいます。このプロジェクトでは、多くのセット操作と操作を使用します。セット操作のストップギャップ対策として文字列操作を使用してきました。アルゴリズムを介して、信じられないほどの量のデータ (それぞれ約 40 列以上の 500,000 レコード) を処理する必要があるまでは、問題なく機能しました。

.net 2.0 にはセット データ構造がないことを知っています (私がプロジェクトを開始したときは 2.0 が最新でした)。構造。

ありがとう 。

4

9 に答える 9

11

.NET 3.5 には、ネイティブ セット データ型HashSetが既にあります。操作については、 HashSet および LINQ の set 演算子も参照してください。

.NET 1.0 には、サード パーティの Set データ型であるIesi.Collectionsがありました。これは、 Iesi.Collections.Genericを使用して .NET 2.0 ジェネリックで拡張されました。

それらすべてを試してみて、どれが最もメリットがあるかを確認することをお勧めします. :)

于 2008-09-22T04:33:25.217 に答える
5

LINQ は、いくつかの集合演算をサポートしています。例については、 LINQ 101 ページを参照してください。
クラスHashSet (.NET 3.5)もあります。


.NET でのセット操作に関する Microsoft のガイドラインは次のとおりです。

HashSet および LINQ セット操作

HasSet クラスでサポートされている集合操作のリスト:

HashSet コレクション型

于 2008-09-22T04:29:22.373 に答える
2

更新: これは .Net 2.0 用です。.Net 3.5 については、aku、Jon の投稿を参照してください。

これは、.Net でセットを効率的に表現するための優れたリファレンスです。

于 2008-09-22T04:29:37.257 に答える
2

C5を見る価値があるかもしれません。これは、セットを含む .NET 用の汎用コレクション ライブラリです。

あまり詳しく調べていませんが、かなり素晴らしいコレクション ライブラリのようです。

于 2008-09-22T05:16:07.423 に答える
1

.NET 3.5 でHashSetを試してください。

.NET BCL チームのメンバーによるこのページには、HashSet の意図に関する有益な情報があります。

于 2008-09-22T04:29:51.560 に答える
1

私は、.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);
}
于 2008-09-22T09:25:22.147 に答える
0

C# 3.0 では、Linq to Objects を使用できます。

于 2008-09-22T04:27:57.167 に答える
0

F# を歌うことについて考えたことはありますか? これは、関数型プログラミング言語の仕事のようです。

于 2008-09-22T04:29:35.477 に答える
0

C5 Generic Collection Libraryをご覧ください。このライブラリは、不足している構造を提供し、既存のものを適切に設計されたインターフェイスとジェネリック クラスのセットで置き換えることにより、.NET クラス ライブラリの穴を修正するための体系的なアプローチです。

とりわけ、HashSet<T>線形ハッシュに基づくジェネリック Set クラスがあります。

于 2008-09-22T09:07:42.080 に答える