如果object1
和object2
是两种不同类型的对象,但实现相同的接口I
,我们假设object1
和object2
具有相同的哈希码
有HashMap<I, String>
。
因此,我们可以通过该哈希映射调用put(object1, "some string")
和put(object2, "some string")
。
我的理解是:
put()
函数,哈希映射中对象的位置取决于
关于密钥对象的哈希码。在object1
投入之后
先映射,然后我们尝试放object2
。它会找到这个位置
已被object1
占用。所以object2
将被放入
object1
的下一个职位。get()
功能,如果我们致电get(object2)
,则会找到object1
首先,找到object1 != object2
,然后它将继续比较
object1的下一个元素,直到找到object2
只想知道我是否正确? 或者该机制中的任何补充信息。
答案 0 :(得分:3)
这将被视为哈希冲突。很可能哈希实现将找到相同的存储桶,然后向下遍历每个条目,直到equals()为该键返回true。所有合理的哈希实现都必须考虑冲突的可能性,但这些会降低散列性能。
答案 1 :(得分:1)
请参阅以下链接:1。how HashMap works in Java和2。how HashMap works in Java
答案 2 :(得分:0)
是的,你的理解是正确的。请参阅Effective Java以获得更好的理解。