Java HashMap空值或键
我是否可以直接将值放入具有空值的Java HashMap空值或键,java,hashmap,Java,Hashmap,我是否可以直接将值放入具有空值的HashMap的键 我要做的是检查HashMap中一个键的值是否为null,然后我将填充它。如果map.get(key)返回null,您知道该键在映射中不存在,或者它存在并且具有null值 要区分两者: if (map.containsKey(key)) { if (map.get(key) == null) { // key is present and has null value } } else { // key i
HashMap
的键
我要做的是检查HashMap
中一个键的值是否为null
,然后我将填充它。如果map.get(key)
返回null,您知道该键在映射中不存在,或者它存在并且具有null值
要区分两者:
if (map.containsKey(key)) {
if (map.get(key) == null) {
// key is present and has null value
}
} else {
// key is not present in the Map
}
除了@Eran答案之外,我应该注意到,不鼓励在
Map
中使用null
值。首先,并非每个Map实现都支持它。例如,ConcurrentHashMap
不支持null
值,因此,如果稍后该Map
将在多个线程之间共享,并且您决定移动到ConcurrentHashMap
,您将发现,如果不清除null,您将无法执行此操作。其次,大多数新的Java-8API方法getOrDefault
,merge
,ComputeFabSent
对null
值的行为不友好:通常它们假定null
值与不存在值相同。最后,处理null
值会稍微慢一些,因为您需要对同一个键进行两次检查(首先通过containsKey
,其次通过get
)
因此,如果可能的话,通常应该避免映射中的空值。有时可能会引入一个特殊的常数,表示该值不存在。这取决于特定的任务。这里是最简单的(可以进一步改进/代码审查)完整程序。它将找到键
,如果相应的值为null
,它将用新值替换该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());
}
}
}
import java.util.HashMap;
导入java.util.Map;
公共类SimpleMapKeyValue{
公共静态void main(最终字符串[]args)引发异常{
final Map=new HashMap();
地图放置(“A”,5);
地图.put(B,10);;
map.put(“D”,空);
地图.put(E,23);;
int yourNewValue=100;
对于(Map.Entry:Map.entrySet()){
if(entry.getValue()==null){
map.put(entry.getKey(),yourNewValue);
}
System.out.println(“Key=“+entry.getKey()+”,Value=“+entry.getValue());
}
}
}
是的,这是可能的。映射键不是映射值。虽然允许,但通常不会“输入空值”(因为它通常不在映射中!),每个映射最多有一个“空键”(相同)。@TuturYorkGaming您只是想看看如何找到具有空值的键,然后在其中输入值吗?是的,这样做相当容易。请让我知道,我会发布代码。Yes@user3320018。谢谢heaps@tuturyokgaming我补充了答案。这是一个简单的程序,查找空值并将其替换为您想要的任何值。那么如何填充空值或键?@tuturyokmagingmap.put(key,value)
是的,我现在需要向键添加空值。因为我正在读取一个文本文件,并将一些行添加到arraylist中,arraylist将被放入值中,但实际情况是我正在读取该行并将其拆分为CSV。所以我要做的是,我首先读取所有的行,上面有逗号,然后将其存储到HashMap的键中。其次,我将它存储到arraylist中,并需要将其放入具有空值的键中。我正在使用JDK-6