Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HashMap空值或键_Java_Hashmap - Fatal编程技术网

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我补充了答案。这是一个简单的程序,查找空值并将其替换为您想要的任何值。那么如何填充空值或键?@tuturyokmaging
map.put(key,value)
是的,我现在需要向键添加空值。因为我正在读取一个文本文件,并将一些行添加到arraylist中,arraylist将被放入值中,但实际情况是我正在读取该行并将其拆分为CSV。所以我要做的是,我首先读取所有的行,上面有逗号,然后将其存储到HashMap的键中。其次,我将它存储到arraylist中,并需要将其放入具有空值的键中。我正在使用JDK-6