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



我有一个这样的hashmap:

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

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

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

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

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

我的问题是:Java返回给我一个警告消息:

方法调用'equals'可能产生'NullPointerException'

当我运行程序时,它没有正常工作。

消息说明了一切:

Method invocation 'equals' may produce 'NullPointerException'

这意味着,当你将equals应用于一个对象时,可能是字符串,有可能是null

当您从具有键keyName的映射中获得值时,不能保证map.get(key)将向equals方法提供对象。如果映射不包含任何具有该键的值,它将返回null,因此NullPointerException警告。

我希望你得到了答案。但是对于没有像你说的那样工作的程序,提供一个最小的可重复的例子,指出预期的是什么,以及你得到了什么。然后我也会更新我的答案。

这里可以使用多个方法

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

用这个

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

最新更新