我的第一直觉是说每个键都是一个对象,并且有一个哈希码,用于确定是否插入了一个副本.但是,我找不到任何可以支持的东西.有人可以提供一个说明的链接,或在这里提供真正的答案吗?谢谢!
该Map
接口规定,如果两个键是null
它们是重复的,否则,如果有一个关键k
,从而key.equals(k)
,然后有一个重复.请参阅此处的contains或get方法:
http://java.sun.com/javase/6/docs/api/java/util/Map.html#containsKey(java.lang.Object)
但是,由Map
实现如何执行该检查,并且HashMap
将使用哈希代码来缩小它将使用该equals
方法检查的潜在密钥.因此在实践中,对于典型的基于散列的映射,为了检查重复,映射将采用散列码(可能是mod某种大小),并且用于equals
与任何其相同大小的散列码mod给出相同余数的键进行比较.