回答
如果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