[英]GetHashCode method for Generic HashSet<T>
我正在尝试为HashSet编写通用IEqualityComparer,以便当且仅当两个元素匹配时两个集合才相等。
因此,等于将看起来像:
public bool Equals(HashSet<T> A, HashSet<T> B)
{
return (A.All(x => B.Contains(x)) && B.All(x => A.Contains(x)));
}
我很难找到一个好的GetHashCode方法。 我知道
public int GetHashCode(HashSet<int> obj)
{
return 1;
}
总是一个选择,但我想拥有比这更好的东西。 有没有人知道我该怎么做? 在每个元素上使用ToString对其进行排序和连接,并为生成的字符串获取哈希码是一个坏主意吗?
IEqualityComparer<T> Interface
在此处抽象了所需的操作集:
Equals
GetHashode
您可以像所有.NET类一样获得默认比较器 :使用EqualityComparer<T>.Default Property
但是,我的理解是HashSet<>
具有使用该政策Comparer
与您调用的操作,即使另需HashSet的作为参数的对象有关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.