我想知道 .Net 是否HashSet<T>
完全基于哈希码还是也使用相等性?
我有一个特定的类,我可能会实例化数百万个实例,并且此时某些哈希码很可能会发生冲突。
我正在考虑使用 HashSet 来存储此类的一些实例,并且想知道它是否真的值得这样做 - 如果元素的唯一性仅由其哈希代码确定,那么这对我的实际应用程序没有用处
MSDN 文档似乎在这个主题上相当模糊 - 任何启发将不胜感激
不,它也使用平等。根据定义,哈希码不需要是唯一的——任何假设它们是唯一的都会被破坏。HashSet<T>
是明智的。它使用一个IEqualityComparer<T> http://msdn.microsoft.com/en-us/library/ms132151(v=VS.90).aspx(默认为EqualityComparer<T>.Default
) 执行哈希代码生成和相等性测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)