java 一次更新HashMap中的所有值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16588492/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Update all values at a time in HashMap
提问by NPKR
I have a HashMap
with some Keys - Values
.
我有HashMap
一些Keys - Values
。
On some condition I want to update allvalues to single value regardless of keys.
在某些情况下,无论键如何,我都想将所有值更新为单个值。
Is there any util or predefined methods to do this, without for loop?
在没有 for 循环的情况下,是否有任何实用程序或预定义的方法可以做到这一点?
Any suggestions?
有什么建议?
回答by Kevin Meredith
if (yourCondition) {
for (Map.Entry<String, String> entry : map.entrySet()) {
map.put(entry.getKey(), MY_VALUE);
}
}
Or for java 8 or higher (without a loop)
或者对于 java 8 或更高版本(没有循环)
if (yourCondition) {
map.replaceAll( (k,v)->v=MY_VALUE );
}
回答by Maroun
You can use iterator on entrySet:
您可以在entrySet上使用迭代器:
Iterator it = yourMap.entrySet().iterator();
Map.Entry keyValue;
while (it.hasNext()) {
keyValue = (Map.Entry)it.next();
//Now you can have the keys and values and easily replace the values...
}
Note that the internal implementation of the iterator still uses a for loop :)
请注意,迭代器的内部实现仍然使用 for 循环 :)
回答by Igor Konoplyanko
回答by Igor Konoplyanko
It's not clear how you plan to set it to a single value, but you can call putAll
on the HashMap
as demonstrated from this answer:
目前尚不清楚你打算怎样将它设置为一个值,但你可以叫putAll
上HashMap
从这个证明答案:
Map tmp = new HashMap(patch);
tmp.keySet().removeAll(target.keySet());
target.putAll(tmp);
patch
is the map
you are adding to target
.
patch
是map
您要添加到target
.
patch
could be a HashMap
containing the same value for all keys....
patch
可能是HashMap
所有键都包含相同的值....
回答by heikkim
Extend the HashMap and make your implementation return your magic value if some condition is set.
如果设置了某些条件,则扩展 HashMap 并使您的实现返回您的魔法值。