将 hashmap 中的值与字符串进行比较
Compare value in hashmap with string
我有一个这样的哈希图:
private HashMap<String, String> myMap = new HashMap<>();
所以,我在我的代码中设置了一个密钥。在我的例子中,key 的值可能会改变:如果条件为真,则获取一些值,如果不为真,则获取其他值:
if (condition.isTrue) myMap.put("keyName", "stringValue");
最后,我想将此映射中的键值与字符串进行比较:
if (myMap.get("keyName").equals("stringToCompare")) {
[... do something ...]
}
我的问题是:Java returns 给我一条警告信息:
方法调用'equals'可能产生'NullPointerException'
当我 运行 程序时,它无法正常工作。
消息说明了一切:
Method invocation 'equals' may produce 'NullPointerException'
这意味着,当您将 equals
应用于可能是字符串的对象时,有可能是 null
.
当您使用键 keyName
从地图中获取值时,equals
方法无法保证 map.get(key)
会为您提供对象。如果映射不包含具有该键的任何值,它将 return 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...
}
}
我有一个这样的哈希图:
private HashMap<String, String> myMap = new HashMap<>();
所以,我在我的代码中设置了一个密钥。在我的例子中,key 的值可能会改变:如果条件为真,则获取一些值,如果不为真,则获取其他值:
if (condition.isTrue) myMap.put("keyName", "stringValue");
最后,我想将此映射中的键值与字符串进行比较:
if (myMap.get("keyName").equals("stringToCompare")) {
[... do something ...]
}
我的问题是:Java returns 给我一条警告信息:
方法调用'equals'可能产生'NullPointerException'
当我 运行 程序时,它无法正常工作。
消息说明了一切:
Method invocation 'equals' may produce 'NullPointerException'
这意味着,当您将 equals
应用于可能是字符串的对象时,有可能是 null
.
当您使用键 keyName
从地图中获取值时,equals
方法无法保证 map.get(key)
会为您提供对象。如果映射不包含具有该键的任何值,它将 return 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...
}
}