我现在正在研究与 roughset 相关的东西。该项目使用了大量的集合操作和操作。我一直在使用字符串操作作为设置操作的权宜之计。它一直运行良好,直到我们需要通过算法处理一些不合情理的数据(500,000 条记录,每条记录大约 40 多列)。
我知道 .net 2.0 中没有设置数据结构(2.0 是我开始项目时最新的) 我想知道是否有任何库在 .net c# 中提供快速设置操作,或者 3.5 是否添加了本机设置数据结构体。
谢谢 。
我现在正在研究与 roughset 相关的东西。该项目使用了大量的集合操作和操作。我一直在使用字符串操作作为设置操作的权宜之计。它一直运行良好,直到我们需要通过算法处理一些不合情理的数据(500,000 条记录,每条记录大约 40 多列)。
我知道 .net 2.0 中没有设置数据结构(2.0 是我开始项目时最新的) 我想知道是否有任何库在 .net c# 中提供快速设置操作,或者 3.5 是否添加了本机设置数据结构体。
谢谢 。
.NET 3.5 已经有一个原生的集合数据类型:HashSet。您可能还想查看操作的HashSet 和 LINQ 集合运算符。
在 .NET 1.0 中,有一个第三方 Set 数据类型:Iesi.Collections,它使用 .NET 2.0 泛型和Iesi.Collections.Generic进行了扩展。
您可能想尝试查看所有这些,看看哪一个对您最有利。:)
LINQ 支持一些集合操作。有关示例,请参见LINQ 101 页面。
还有一个类HashSet (.NET 3.5)
以下是 .NET 中设置操作的 Microsoft 指南:
HasSet 类支持的集合操作列表:
It may be worth taking a look at C5, it's a generic collection library for .NET which includes sets.
Note that I haven't looked into it much, but it seems to be a pretty fantastic collection library.
更新:这是针对 .Net 2.0 的。对于 .Net 3.5,请参阅 aku、Jon 的帖子。
这是在 .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 类。