【发布时间】:2019-11-03 14:23:42
【问题描述】:
Map<String, String> map = new HashMap<String, String>();
我知道地图的内部工作。如果两个键的哈希码相同,就会发生冲突,它将存储在链表中。但是如果再放那把钥匙呢。
对此有任何检查吗?或者它会简单地替换值而不检查?
详细说明
map.put("sparsh", "sparsh");
map.put("sparsh", "1");
它将值“sparsh”替换为“1”
map.put("sparsh", "1");
map.put("sparsh", "1");
上述情况会发生什么情况,是否可以更换?
还有一些与上述问题不同的上下文
System.out.println(map.put("sparsh", "sparsh"));
System.out.println(map.put("sparsh", "1"));
它首先给我“null”,然后是“sparsh”(key)。这背后的原因是什么,如果有人对此有所了解的话。
【问题讨论】:
-
来自
Map.put的javadocs:将指定的值与此映射中的指定键相关联(可选操作)。 如果映射先前包含键的映射,则旧值将替换为指定值。返回:与键关联的先前值 , 如果没有 key 映射,则返回 null。 这回答了你的两个问题。