C# 为唯一整数集合推荐的.NET类?

C# 为唯一整数集合推荐的.NET类?,c#,.net,C#,.net,对于需要保留唯一整数列表的类,您有什么建议 我要向集合中添加()个整数,并检查是否存在,例如Contains() 也可以将它们作为字符串显示在列表中,即“1、5、10、21”。: HashSet类提供了高性能的集合操作。集合是不包含重复元素的集合,其元素没有特定顺序 HashSet对象的容量是该对象可以容纳的元素数。当元素添加到对象中时,HashSet对象的容量会自动增加 HashSet类基于数学集的模型,提供类似于访问或集合的键的高性能集操作。简单来说,HashSet类可以看作是一个没有值的集

对于需要保留唯一整数列表的类,您有什么建议

我要向集合中添加()个整数,并检查是否存在,例如Contains()

也可以将它们作为字符串显示在列表中,即“1、5、10、21”。

HashSet
类提供了高性能的集合操作。集合是不包含重复元素的集合,其元素没有特定顺序

HashSet
对象的容量是该对象可以容纳的元素数。当元素添加到对象中时,
HashSet
对象的容量会自动增加

HashSet
类基于数学集的模型,提供类似于访问或集合的键的高性能集操作。简单来说,
HashSet
类可以看作是一个没有值的集合

HashSet
集合未排序,不能包含重复的元素


如果不能使用.NET3.5,那么就不能使用HashSet。如果是这样的话,你可以很容易地根据字典结构来滚动你自己的

public class Set<T> {
    private class Unit { ... no behavior }
    private Dictionary<T, Unit> d;

....
}
公共类集合{
私有类单元{…无行为}
私人词典d;
....
}

Unit是一个只有一个值的类型。将元素映射到什么并不重要,只需使用键来了解集合中的内容即可。您在问题中要求的操作很容易实现。

您可以从KeyedCollection继承一个类。通过这种方式,您的键可以是值本身,您可以覆盖ToString,以便获得所需的输出。这可以给你想要/需要的行为


注意,这个答案是针对Q的Framework2.0部分的。在我的测试中,我发现当处理非常大的数据集(在我的例子中是100000多个)时,具有伪值的字典比哈希集更快。我想这是因为字典允许您设置初始容量,但我真的不知道。在您所描述的情况下,如果我希望得到一组非常大的数字,我可能会使用字典,然后(或者在我添加到字典时,根据意图)使用字符串生成器对其进行迭代,以创建输出字符串。

我查看了arraylist,它肯定比arraylist好,所以我删除了我以前的答案。HashSet将尝试转换类型。。。不是名单。他显示的列表是有序的,HashSet不支持。正确。要获取字符串列表,可以使用如下代码:int[]a=h.ToArray();数组。排序(a);Join(“,”,a);这不是高性能,但我得到的印象是,这不是一个常见的操作,更多的是用于调试/查看而不是计算。为Linq更新:
String.Join(“,”,a.OrderBy(\u=>\ u))
@EBGreen实际上,对于绝大多数用例,其他集合类型都比ArrayList好。抱歉,我没有指定。我可以使用最新的框架。3.5但是你的答案可能会帮助其他不能使用最新版本的人。为什么还要创建
Unit
类?值可以是
null
。类型是什么?“反对”?