在 Java 中,我理解如果两个键映射到一个值,由于碰撞会发生线性链接。
例如:
 Map myMap= new HashMap(); //Lets says both of them get mapped to same bucket-A and
myMap.put("John", "Sydney");//linear chaining has occured.
myMap.put("Mary","Mumbai"); //{key1=John}--->[val1=Sydney]--->[val2=Mumbai]
所以当我这样做的时候:
myMap.get("John"); // or myMap.get("Mary")
由于 bucket-A 包含两个值,JVM 返回什么? 它是否将 ref 返回到“chain”?它会返回“悉尼”吗?还是返回“孟买”?
最佳答案
当您的键具有相同的哈希码时而不是当两个键映射到一个值时会发生线性链接。
So when I do: myMap.get("John"); // or myMap.get("Mary")
map.get("John")
给你悉尼
map.get("Mary")
给你孟买
What does the JVM return since bucket-A contains two values?
如果同一个桶包含两个值,则使用键的 equals
方法来确定要返回的正确值。
值得一提的是存储 (K,V) 对都具有相同的 Key hashCode 的最坏情况。在这种情况下,您的 HashMap 会降级为链表。
关于Java - 当两个键映射到相同的值时返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15276720/