你如何判断两个HashSets是相等的(按价值计算,而不是参考)?
题
我试图确定两个对象HashSet
在.NET 3.5(C#)是相等的组,即的包含相同的值。这看起来像是一个显然想做但没有提供的功能似乎给你这个信息。
我能想到要做到这一点的方式是通过检查如果这两组的计数相等的和一组是另一个的子集(未正确)。我认为,可能发生的唯一途径是,如果他们是平等的套。示例代码:
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()
功能?
解决方案
看该方法 SetEquals
my_hashset.SetEquals(other);
其他提示
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);
不隶属于 StackOverflow