Java 在保留键的同时清除HashMap值

Java 在保留键的同时清除HashMap值,java,hashmap,Java,Hashmap,是否有办法在保留键的同时清除所有值 我的HashMap是,所以我应该循环遍历并用null替换每个值吗?有更好的方法吗?如果您使用的是Java 8+,您可以使用: map.replaceAll((k, v) -> null); 否则,在条目上循环可能是最简单的方法。从上面的链接可以看出,Map#replaceAll的默认实现相当于: for (Map.Entry<K, V> entry : map.entrySet()) entry.setValue(function.

是否有办法在保留键的同时清除所有值

我的
HashMap
,所以我应该循环遍历并用
null
替换每个
值吗?有更好的方法吗?

如果您使用的是Java 8+,您可以使用:

map.replaceAll((k, v) -> null);
否则,在
条目上循环可能是最简单的方法。从上面的链接可以看出,
Map#replaceAll
的默认实现相当于:

for (Map.Entry<K, V> entry : map.entrySet())
    entry.setValue(function.apply(entry.getKey(), entry.getValue()));
for(Map.Entry:Map.entrySet())
setValue(function.apply(entry.getKey(),entry.getValue());
其中function是参数,因此可以执行以下操作:

for (Map.Entry<K, V> entry : map.entrySet()) {
    entry.setValue(null);
}
for(Map.Entry:Map.entrySet()){
entry.setValue(null);
}

我会保持简单,收集列表或集合中的标题,然后通过在列表上循环而不是尝试回收相同的映射,在每行创建一个新的HashMap。

请问您为什么要这样做?当然。我有一个类似于csv的文件。首先,我将读入所有字段名,并将它们设置为键。然后,对于后续的每一行,我将把每个字段设置为一个值,并执行一些操作。那么,下一行我再做一次。但是,某些字段可能丢失(将是“”),因此我希望确保数据不会意外地保留到下一行。set null和remove是两种不同的方法,如果添加一组null值,映射数组将增长
for(String key : map.keySet()) {
  map.put(key, null);
}