保留密钥时清除HashMap值

时间:2014-10-12 23:48:27

标签: java hashmap

有没有办法清除所有值,同时保留键?

我的HashMap<String,String>,我应该循环并用value替换每个null吗?有没有更好的方法呢?

3 个答案:

答案 0 :(得分:7)

如果您使用的是Java 8+,则可以使用Map#replaceAll

map.replaceAll((k, v) -> null);

如果没有,循环Entry可能是最简单的方法。在上面的链接中,Map#replaceAll的默认实现等同于:

for (Map.Entry<K, V> entry : map.entrySet())
    entry.setValue(function.apply(entry.getKey(), entry.getValue()));

其中function是参数,所以你可以这样做:

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

for(String key : map.keySet()) {
  map.put(key, null);
}