我试图确定.NET 3.5(C#)中的两个HashSet
对象是否是相等的集合,即包含相同的值。这似乎是人们显然想做的事情,但所提供的功能似乎都没有给你这些信息。
我能想到的方法是检查两组的计数是否相等和一组是另一组的子集(不合适)。我认为唯一可能发生的方法是它们是否相同。示例代码:
HashSet<int> set1 = new HashSet<int>();
set1.Add(1);
set1.Add(2);
set1.Add(3);
HashSet<int> set2 = new HashSet<int>();
set2.Add(1);
set2.Add(2);
set2.Add(3);
if(set1.Count == set2.Count && set1.IsSubsetOf(set2))
{
// do something
}
这会一直有效吗?有没有更好的办法?为什么HashSet
没有public bool IsEqualSetWith()
函数?
答案 0 :(得分:84)
查看方法SetEquals。
my_hashset.SetEquals(other);
答案 1 :(得分:4)
IEqualityComparer<HashSet<int>> comp = HashSet<int>.CreateSetComparer();
Console.WriteLine("CreateSetComparer set1 == set2 : {0}", comp.Equals(set1, set2));
// or
bool areEqual = HashSet<int>.CreateSetComparer().Equals(set1, set2);