java.util.Map.put(key,value) - 如果value等于现有值,该怎么办?

phi*_*ilo 5 java collections map

从规范:"如果地图以前包含键的映射,旧值将替换为指定的值." 我想知道value.equals(旧值)但值!=旧值的情况.我对规范的解读是旧的价值仍然必须被替换.是对的吗?

pb2*_*b2q 5

如果新密钥与现有密钥匹配,则无论其值如何,映射值都将被替换,例如,即使oldValue.equals(newValue)true.

我不认为我们需要查看源代码,或者依赖于测试代码:这Map.put在我们发现的文档中是明确的:

如果映射先前包含键的映射,则旧值将替换为指定的值.(当且仅当m.containsKey(k)返回true时,地图m才包含密钥k的映射.)