Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如果我有HashSet<Double>一个长度在 1 到 10.000 之间的 Java,那么这个集合的哈希码和它的所有子集是唯一的吗?
HashSet<Double>
不,Object.hashCode()方法实现(例如HashSet.hashCode())不保证返回唯一值,只返回一个伪随机值,足以满足散列数据结构的目的。
Object.hashCode()
HashSet.hashCode()
HashSet<Double>如果您需要基于设置内容的唯一值,您应该自己实现它。
集合的哈希码定义为集合中元素的哈希码之和,其中元素的哈希码null定义为的总合同。zeros1.equals(s2)s1.hashCode()==s2.hashCode()s1s2Object.hashCode
null
zero
s1.equals(s2)
s1.hashCode()==s2.hashCode()
s1
s2
Object.hashCode