我想知道 .Net HashSet<T>
是否是完全基于哈希码还是也使用相等性?
我有一个特定的类,我可能会实例化它的数百万个实例,并且某些哈希码很可能会在此时发生冲突。
我正在考虑使用 HashSet 来存储此类的一些实例,并且想知道它是否真的值得这样做 - 如果元素的唯一性仅由其哈希码确定,那么这对我的实际应用程序毫无用处
MSDN 文档在这个主题上似乎相当模糊 - 任何启发将不胜感激
最佳答案
不,它也使用平等。根据定义,散列码不需要是唯一的——任何假定它们将被破坏的东西。 HashSet<T>
是明智的。它使用 IEqualityComparer<T>
(默认为 EqualityComparer<T>.Default
)以执行哈希码生成和相等性测试。
关于c# - .Net HashSet 唯一性计算是否完全基于Hash Codes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455168/