关于.net:在C#中使用集合的最佳拟合数据结构是什么

What is the best fit data structure to work with Sets in C#

本问题已经有最佳答案,请猛点这里访问。

假设我需要比较多个集合,找出哪个相等或不相等。

最后,我需要比较多个集合并创建一个最终集合,从每个集合中获取唯一的数据。我还需要处理所有项目它们在不同的集合中重复。


你应该使用System.Collections.Generic.HashSet

您可以像这样创建它:

var hashSet = new HashSet(IEnumerable)

然后使用方法进行比较:

如果hashset和list包含相同的项,hashSet.SetEquals(IEnumerable list)将返回true。

如果hashset包含列表中的某个项,则hashSet.Overlaps(IEnumerable list)将返回true。

如果hashset是列表的子集(顺序无关紧要),则hashSet.IsSubsetOf(IEnumerable list)将返回true。

hashSet.IsProperSubsetOf(IEnumerable list)—与IsSubsetOf相同,但订单事项

如果hashset是列表的超集(顺序无关紧要),则hashSet.IsSupersetOf(IEnumerable list)将返回true。

hashSet.IsProperSupersetOf(IEnumerable list)—与IsSupersetOf相同,但订单事项

还有一些方法可以修改:

hashSet.UnionWith(IEnumerable list)将修改hashset以包含存在的元素。在当前哈希集或列表中或两者中。

hashSet.symmetricExceptWith(IEnumerable list)将修改hashset以包含仅存在的元素。在当前哈希集或列表中,但不能同时在两者中。

hashSet.IntersectWith(IEnumerable list)将修改hashset以包含存在的元素。在当前哈希集和列表中。

有关HashSet的更多信息,请参阅msdn文章。


您可以使用HashSet类,该类表示一组不重复的元素,并将IntersectWithUnionWithExceptWith等方法公开用于常用的集合操作。