回答
如果map.get(key)
返回null,那麼您知道密鑰不存在於Map中,或者它存在且具有空值。
要區分這兩個:
if (map.containsKey(key)) {
if (map.get(key) == null) {
// key is present and has null value
}
} else {
// key is not present in the Map
}
那麼我該如何填充空值或鍵? – tuturyokgaming
@tuturyokgaming'map.put(key,value)' – Eran
除了@Eran答案我應該指出,在Map
有null
值氣餒。首先,它不受每個Map實現的支持。例如,ConcurrentHashMap
不支持null
值,因此如果稍後此Map
將在多個線程中共享,並且您決定轉移到ConcurrentHashMap
,則會發現在不刪除空值的情況下無法執行此操作。其次,大多數新的Java-8 API方法getOrDefault
,merge
,computeIfAbsent
不符合null
值:通常他們認爲null
的值與沒有值相同。最後處理null
值有點慢,因爲你需要檢查兩次相同的密鑰(第一次通過containsKey
,第二次通過get
)。
因此,一般來說,如果可能的話,你應該避免在地圖中的空值。有時候可以引入一個特殊的常量來表示沒有價值。這取決於特定的任務。
是的,我現在需要爲鍵添加空值。因爲我正在閱讀一個文本文件,並將一些行添加到arraylist和arraylist將被放到該值,但發生的是我正在閱讀該行並將其分解爲CSV。所以我在做什麼,我先用逗號讀取所有行,然後將它存儲到HashMap的關鍵字。其次我將它存儲到arraylist並需要將它放到具有空值的鍵上。我正在使用JDK-6 – tuturyokgaming
這是最簡單的(可以進一步改進/代碼審查)完整的程序。它會找到key
,如果相應的值是null
它將用yourNewValue替換null。
import java.util.HashMap;
import java.util.Map;
public class SimpleMapKeyValue {
public static void main(final String[] args) throws Exception {
final Map<String, Integer> map = new HashMap<>();
map.put("A", 5);
map.put("B", 10);
map.put("D", null);
map.put("E", 23);
int yourNewValue = 100;
for(Map.Entry<String, Integer> entry : map.entrySet()){
if (entry.getValue() == null) {
map.put(entry.getKey(),yourNewValue);
}
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
}
}
- 1. 具有多個值的密鑰的HashMap
- 2. 與變密鑰值GSON到HashMap中
- 3. 帶類密鑰的Java HashMap泛型
- 4. 在Java HashMap中存儲兩次「密鑰」?
- 5. Java - 獲取HashMap中的密鑰索引?
- 6. Hashmap keySet()返回值而不是密鑰
- 7. 比較兩個hashmap值與密鑰
- 8. 從嵌套Hashmap獲取密鑰和值
- 9. HashMap不返回基於密鑰的值
- 10. Java HashMap:如何通過索引獲取密鑰和值?
- 11. Java Hashmap:從給定值的數組中獲取密鑰
- 12. HashMap以null作爲密鑰
- 13. Java密鑰 - 密鑰圖
- 14. Java Hashmap使用隨機值從給定密鑰返回一個值
- 15. HashMap密碼鎖java
- 16. 將新密鑰放入HashMap替換現有的不同密鑰
- 17. 如何在HashMap中獲取特定值的密鑰?
- 18. 實體xxx不是密鑰值編碼兼容密鑰「(空)」
- 19. 在Java HashMap中綁定空值
- 20. Java密鑰
- 21. 關於java中的雙密鑰併發hashmap
- 22. 爲什麼我在Java HashMap中獲取重複密鑰?
- 23. Java:如何使用HashMap的一對密鑰
- 24. 關於Java HashMap:當密鑰是一組時<Integer>
- 25. 檢查HashMap的Java ArrayList <String,String>是否包含密鑰
- 26. Java:檢查密鑰是否包含在兩個HashMap中
- 27. Java hashmap - 基於不同類型的兩個對象的密鑰
- 28. 約束特定的密鑰 - 約定的HashMap - Java的
- 29. Java:如何檢查密鑰是否映射到HashMap?
- 30. 用戶無法在java中添加hashmap的密鑰while循環
是的,那是可能的。 –
地圖鍵不是地圖值。雖然允許,但通常不會「放置空值」(因爲它通常不會在地圖上開始!),並且每個地圖最多隻有一個「空鍵」(它是相同的)。 – user2864740
@tuturyokgaming你只是想看看如何找到具有空值的鍵,然後在那裏放置一個值?是的,這樣做很容易。請讓我知道,我會發布代碼。 – Nirmal