如果我的Java HashSet<Double>
的长度在1到10.000之间,则此集合及其所有子集的哈希码是否唯一?
没有Object.hashCode()
方法的实现(例如HashSet.hashCode()
)不能保证返回唯一值,而只能返回足以满足哈希数据结构目的的伪随机值。
如果您根据设置的内容为HashSet<Double>
指定一个唯一值,则应自己实施。
集合的哈希码定义为集合中元素的哈希码之和,其中null
元素的哈希码定义为zero
。这确保了s1.equals(s2)
意味着根据s1.hashCode()==s2.hashCode()
的总合同的要求,将任意两个集s1
和s2
的Object.hashCode
。