[英]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 向我返回一條警告消息:
方法調用“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...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.