我的第一直觉是说每个键都是一个对象,并且有一个哈希码,用于确定是否插入了重复项。但是,我找不到任何东西来肯定地支持它。有人可以提供这样的链接,或者在这里提供真正的答案吗?谢谢!
最佳答案
Map
接口(interface)指定如果两个键是 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
方法。所以在实践中,对于一个典型的基于散列的映射,为了检查重复项,映射将采用散列码(可能修改一些大小),并使用 equals
与散列码相同大小的任何键进行比较相同的余数。
关于java - Java 使用什么来确定键是否在 Map 中重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/364794/