.NET通用集合是什么?

11

在.NET中是否有实现“set”行为的通用容器?

我知道我可以使用Dictionary<T, Object>(可能还添加null作为值),因为它的键充当集合,但我很好奇是否有现成的东西。


上次我检查的时候,在Java中,HashSet<T>是通过HashMap<T, Object> <=> Dictionary<T, Object>(值为null)实现的,但在.NET中,HashSet<T>不使用任何集合。它是一个“核心”实现。 - bruno conde
3个回答

20

HashSet<T> in .NET 3.5


3

我使用的是随NHibernate一起提供的Iesi.Collections命名空间(文档在这里) - 如果你使用的是 .NET < 3.5,也许值得考虑。


2

在.NET 3.5中引入了:HashSet<T>(见下文)。

在.NET 4.0中引入了:ISet<T>

提供了用于集合抽象的基本接口。该接口提供了实现集合的方法,集合是具有唯一元素和特定操作的集合。

该接口在.NET 4+ BCL中有两个实现:

  • HashSet<T>

    ...提供高性能的集合操作。集合是不包含重复元素且元素没有特定顺序的集合。

  • SortedSet<T>

    表示按排序顺序维护的对象集合。 SortedSet(Of T) 在插入和删除元素时保持排序顺序,而不会影响性能。不允许重复元素。

顺便提一下:在命名空间System.Collections.Generic下还有一个internalclass TreeSet<T>: SortedSet<T>
它唯一的目的似乎是在实现SortedDictionary<TKey, TValue>时使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接