containsKey检查hashmap

时间:2014-06-18 06:29:25

标签: java

我已经阅读了多篇帖子来理解这一点,但我似乎无法深入了解为什么我们在执行put操作之前检查地图是否包含密钥?例如,

    if(!myMap.containsKey(myKey) {
    myMap.put(myKey,myValue);
}

为什么我们需要这张支票?无论哪种方式,map都不允许重复键,如果键已经存在,则用新值替换键。那么为什么我们需要明确检查呢?所有Map的实现都需要检查吗?如果这是一个非常基本的问题,我很抱歉。我似乎无法找到这个确切问题的答案。如果有帖子回答这个我可能错过的帖子,请指教我,并随意将我的标记重复。

3 个答案:

答案 0 :(得分:3)

您需要检查,因为如果密钥已经存在,有时您不想更新地图的值。我认为这是一个广泛使用的代码块,其中地图是可变的/可修改的,但可以防止覆盖值。

答案 1 :(得分:0)

value被覆盖时,地图key也会被覆盖。

答案 2 :(得分:0)

在这里添加对这些多个帖子的引用以查看详细说明会很不错。

地图确实不允许"多个"条目,因此当您致电put(key, value)时,您实际上会替换现有值或创建新条目。因此,如果您对最后一个条目感兴趣,则只能在不进行任何检查的情况下致电put()。如果你在第一次参赛时感兴趣,那么你应该在投入之前检查钥匙是否存在。

示例是属性文件和Windows ini fie之间的区别。如果在属性中有2个具有相同键的条目,则将设置最后一个值。但是,在解析ini文件时,将采用第一个重复条目。