HashMap空值问题

5

这两个结果有什么区别?

  1. 当我使用一个空的键值对时

  2. 当键本身不存在时

在上述两种情况下,结果都是null。那么我该如何识别我的键值呢?

Map map = new HashMap();
map.put(1,null);
System.out.println(map.get(1));
System.out.println(map.get(2));

答案:

null

null

1
可能是HashMap中键是否存在的检查的重复问题。 - Joe
3个回答

9

get 方法对于 null 值和不存在的键返回相同的结果,而 containsKey 则不同:

map.containsKey(1) 将返回 true

map.containsKey(2) 将返回 false

此外,如果您遍历 Map 的键(使用 keySet()),则会出现 1 而没有出现 2


0

如果没有将Value映射到键,则哈希映射返回null。因此,您的代码也可以解决这个问题:

if( map.get(1) != null ){
     //
}

此处参考


这个建议对原帖作者没有帮助。 - Radiodef

0

检查值是否为空,以避免打印空值。

伪代码:

//For inputting
if(object != null){
   map.put(1, object);
}
//For getting the value
if(value != null){
     map.get(value)
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接