java – Map.containsKey()有用吗?

前端之家收集整理的这篇文章主要介绍了java – Map.containsKey()有用吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Is using java Map.containsKey() redundant when using map.get()6个
我想知道,在尝试访问它之前检查特定密钥是否有意义.例:
Map myMap ....
if myMap.containsKey(key) {
   Object value = myMap.get(key);
   .....
}

不使用containsKey的示例:

Object value = myMap.get(key);
if (value != null) {
 ......
}

编辑:澄清空键和值.假设该映射不允许空键和空值,因此这两个示例是相同的.

解决方法

是 – 键可以具有空值:
Map myMap = ...;
myMap.put("foo",null);
if (myMap.containsKey("foo")) {
   Object value = myMap.get(key); // value is null
}

Object value = myMap.get("foo");
if (value != null) {
    // you won't get here
}

您可以争辩(并且我同意),当他们第一次创建Java的集合API时,不区分空值和不存在的条目是一个非常糟糕的设计决策.

(有些地图 – 至少是HashtableConcurrentHashMap – 不允许空值,这使得containsKey不那么重要,但它仍然比m.get(k)== null提高了可读性.)

猜你在找的Java相关文章