我目前正在学习Java,并遇到一些麻烦与简单的Java代码,我必须处理一个HashMap丢失的键和值。
具体来说,我正在寻找一种方法来区分给定HashMap myHashMap
的以下两种情况:
-
myHashMap.get("myKey")
显式映射到null
-
myHashMap
不包含"myKey"
的键
在寻找解决方案时,我在Java 8 SE中HashMaps的get
方法的文档中发现了以下内容,其中说:
返回值为null并不一定表示映射中不包含该键的映射;也有可能地图显式地将键映射为null。可以使用
containsKey
操作来区分这两种情况。
我想知道是否有人知道我如何以这种方式使用containsKey() ?
1) myHashMap.get("myKey")显式映射为null
尽管它映射到null
,但containsKey仍然为您返回true
,因为存在一个名为myKey
的键,保存值null
2)myHashMap不包含"myKey"的键
显然返回false
,因为没有找到具有该名称的键。
没有太多需要解释的,但这里有一个显式的代码示例。
HashMap<Integer, Object> m = new HashMap<>();
m.put(1, new Object());
m.containsKey(1); // returns true
m.containsKey(2); // returns false
您可以区分三种可能性(未映射到任何值、显式映射到null值、映射到非空值),如下所示:
final boolean keyIsNotMappedToAnything =
!myHashMap.containsKey("myKey");
final boolean keyIsExplicitlyMappedToNull =
myHashMap.containsKey("myKey") && myHashMap.get("myKey") == null;
final boolean keyIsMappedToANonNullValue =
myHashMap.get("myKey") != null;
可以使用contains键方法
http://www.javaworld.com/article/2073473/java-map-get-and-map-containskey.html