69

我试图确定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()

4

2 回答 2

121

查看方法SetEquals

my_hashset.SetEquals(other);
于 2009-01-30T01:56:06.073 回答
5
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);
于 2014-04-24T07:15:13.280 回答