将hashmap中的值与字符串进行比较

iq0todco  于 2021-09-13  发布在  Java
关注(0)|答案(3)|浏览(300)

我有这样一个hashmap:

private HashMap<String, String> myMap = new HashMap<>();

所以,我在代码中设置了一个键。在我的例子中,key的值可能会改变:如果一个条件为true,则获取某个值,如果不是,则获取另一个值:

if (condition.isTrue) myMap.put("keyName", "stringValue");

最后,我想将此Map中键的值与字符串进行比较:

if (myMap.get("keyName").equals("stringToCompare")) { 
      [... do something ...] 
    }

我的问题是:java返回给我一个警告消息:
方法调用“equals”可能会产生“nullpointerexception”
当我运行程序时,它不能正常工作。

pgvzfuti

pgvzfuti1#

这条信息说明了一切:

Method invocation 'equals' may produce 'NullPointerException'

也就是说,当你申请的时候 equals 在一个可能是字符串的对象上,有可能是 null .
当您使用键从Map中获取值时 keyName ,则不保证 equals 方法 map.get(key) 我会给你这个东西。如果Map不包含该键的任何值,它将返回 null 因此 NullPointerException 警告
我希望你得到了答案。但是对于没有像你所说的那样工作的程序,请提供一个最小的可重复的示例,指出预期的内容和你得到的内容。然后我也会更新这部分的答案。

nafvub8i

nafvub8i2#

您可以在这里使用多种方法

1) map.getOrDefault("keyName","").equals("stringToCompare")
2) Objects.deepEquals(map.get("keyName"),"stringToCompare")
3) "stringToCompare".equals(map.get("keyName"))
jobtbby3

jobtbby33#

用这个。

if(myMap.get("keyName") != null) {
    if(myMap.get("keyName").equals("stringToCompare")) {
        //do something...
    }
}

相关问题