HashMap如何使用具有相同哈希码的两个对象

时间:2014-02-20 06:53:17

标签: java

如果object1object2是两种不同类型的对象,但实现相同的接口I,我们假设object1object2具有相同的哈希码

HashMap<I, String>

因此,我们可以通过该哈希映射调用put(object1, "some string")put(object2, "some string")

我的理解是:

  1. 对于put()函数,哈希映射中对象的位置取决于 关于密钥对象的哈希码。在object1投入之后 先映射,然后我们尝试放object2。它会找到这个位置 已被object1占用。所以object2将被放入 object1的下一个职位。
  2. 对于get()功能,如果我们致电get(object2),则会找到object1 首先,找到object1 != object2,然后它将继续比较 object1的下一个元素,直到找到object2
  3. 的同一个对象

    只想知道我是否正确? 或者该机制中的任何补充信息。

3 个答案:

答案 0 :(得分:3)

这将被视为哈希冲突。很可能哈希实现将找到相同的存储桶,然后向下遍历每个条目,直到equals()为该键返回true。所有合理的哈希实现都必须考虑冲突的可能性,但这些会降低散列性能。

答案 1 :(得分:1)

请参阅以下链接:1。how HashMap works in Java和2。how HashMap works in Java

答案 2 :(得分:0)

是的,你的理解是正确的。请参阅Effective Java以获得更好的理解。