保留密钥时清除HashMap值

Ada*_*m_G 3 java hashmap

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

HashMap<String,String>,所以我应该循环并value用一个null?有没有更好的方法呢?

Ale*_*lex 7

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

map.replaceAll((k, v) -> null);
Run Code Online (Sandbox Code Playgroud)

如果没有,循环Entrys可能是最简单的方法.从上面的链接,默认实现Map#replaceAll相当于:

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

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

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