Java - 当两个键映射到相同的值时返回什么?

标签 java dictionary

在 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/

相关文章:

java - Ant 和java 8 - "major version 52 is newer than 51, the highest major version supported by this compiler"

java - 将日期从 ISO 8601 Zulu 字符串转换为 Java 8 中的 java.time.Instant

Java 相当于 XMLReader C#

list - 如何为 Grid (2d List) 类型制作 indexedMap 函数?

java - 哪些类应该在 JSF appl 中实现可序列化?

python - 创建字典的更优雅代码的提示

java - 在 Java 8 中合并多个 map

Python:如何为字典分配一个长度不同的列表的值?

algorithm - 寻求有效的算法来分析类似于VBA中数据透视表的数据

java 游荡和垃圾收集