Java Hashmap:当我们放置相同的键时,map是如何工作的

Java Hashmap:当我们放置相同的键时,map是如何工作的,java,hashmap,Java,Hashmap,它将值sparsh替换为1 map.put("sparsh", "sparsh"); map.put("sparsh", "1"); 在上述情况下会发生什么,是否需要更换 与上述问题有一些不同的背景 map.put("sparsh", "1"); map.put("sparsh", "1"); 它先给我null,然后给我sparshkey。如果有人对此有明确的认识,那么背后的原因是什么。看跌期权合同是: 当密钥未知时,添加一个新的密钥/值对, 当密钥已知时,更新覆盖现有密钥/值对的值。 在您

它将值sparsh替换为1

map.put("sparsh", "sparsh");
map.put("sparsh", "1");
在上述情况下会发生什么,是否需要更换

与上述问题有一些不同的背景

map.put("sparsh", "1");
map.put("sparsh", "1");

它先给我null,然后给我sparshkey。如果有人对此有明确的认识,那么背后的原因是什么。

看跌期权合同是:

当密钥未知时,添加一个新的密钥/值对, 当密钥已知时,更新覆盖现有密钥/值对的值。 在您的情况下,您无法观察输入新值与保留旧值之间的区别。两个具有两个值的字符串总是相等的,因此这并不重要

但是:您可以很容易地使用具有两个字段的类构造一个示例,其中两个对象相等,但值不同,因为在equals实现中只使用了两个字段中的一个

因此,新值必须进入映射,即使它等于已经存在的值

来自以下文件:

返回:与键关联的上一个值,如果存在,则返回null 没有键的映射。null返回也可以表示映射 如果实现支持,则以前将null与键关联 空值

这是什么意思 将条目添加到地图时:

如果具有该键的条目存在,则它将返回最后一个值, 否则,在您的示例中,它将返回null。 以下是一个具有多个PUT的示例:

V put(K key, V value)
返回与同一键关联的上一个值

因此,最初没有与键关联的值,因此第一个map.putsparsh,sparsh返回null


然后,由于映射中有key:sparsh,value:sparsh,调用map.putsparsh,1将返回上一个值,如map.put的javadocs中的sparsh

:将指定值与此映射可选操作中的指定键相关联。如果映射以前包含键的映射,则旧值将替换为指定值。返回:与键关联的上一个值,如果键没有映射,则返回null。这回答了你的两个问题。我忘了提到这一部分,很高兴现在有人提到了,我省去了再次编辑答案的工作-
System.out.println(map.put("sparsh", "sparsh"));
System.out.println(map.put("sparsh", "1"));
V put(K key, V value)
System.out.println(map.put("key", "v1")); // null
System.out.println(map.put("key", "v2")); // v1
System.out.println(map.put("key", "v3")); // v2
System.out.println(map.put("key2", "v4")); // null