有人知道c#中是否有类似于Java的Set集合的好方法吗?我知道您可以使用Dictionary或HashTable来填充但忽略值,从而在某种程度上模拟一个集合,但这不是一种非常优雅的方式。


当前回答

如果你使用。net 3.5,你可以使用HashSet<T>。net确实不能像Java那样满足集合的需求。

Wintellect PowerCollections也可能有所帮助。

其他回答

在CodePlex上看看PowerCollections。除了Set和OrderedSet,它还有一些其他有用的集合类型,如Deque, MultiDictionary, Bag, OrderedBag, OrderedDictionary和OrderedMultiDictionary。

对于更多的集合,还有C5通用集合库。

我用Iesi。集合http://www.codeproject.com/KB/recipes/sets.aspx

它被用在很多OSS项目中,我第一次接触它是在NHibernate中

我使用Dictionary<T对象>的包装器,在值中存储空值。这就提供了O(1)键的添加、查找和删除,并且在所有意图和目的上都像一个集合。

如果你使用。net 3.5,你可以使用HashSet<T>。net确实不能像Java那样满足集合的需求。

Wintellect PowerCollections也可能有所帮助。

如果你使用。net 4.0或更高版本:

在需要排序的情况下,使用SortedSet<T>。否则,如果没有,则使用HashSet<T>,因为它是O(1)用于搜索和操作操作。而SortedSet<T>对于搜索和操作操作是O(log n)。