Java:给定一个HashMap,我如何使用containsKey()来判断key是否显式映射到空值



我目前正在学习Java,并遇到一些麻烦与简单的Java代码,我必须处理一个HashMap丢失的键和值。

具体来说,我正在寻找一种方法来区分给定HashMap myHashMap的以下两种情况:

  1. myHashMap.get("myKey")显式映射到null
  2. myHashMap不包含"myKey"
  3. 的键

在寻找解决方案时,我在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

最新更新