我有HashMap
个Keys - Values
。
在某些情况下,我想将所有值更新为单值而不管密钥。
是否有任何util或预定义方法可以执行此操作,而不使用for循环?
有什么建议吗?
答案 0 :(得分:7)
if (yourCondition) {
for (Map.Entry<String, String> entry : map.entrySet()) {
map.put(entry.getKey(), MY_VALUE);
}
}
答案 1 :(得分:2)
您可以在 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...
}
请注意,迭代器的内部实现仍然使用for循环:)
答案 2 :(得分:1)
尝试使用Guava:
Collections2.transform(stringStringHashMap.values(), new Function<String, String>() {
@Override
public String apply(java.lang.String s) {
return "modified string";
}
});
答案 3 :(得分:0)
目前尚不清楚您打算如何将其设置为单个值,但您可以在putAll
上调用HashMap
,如answer所示:
Map tmp = new HashMap(patch);
tmp.keySet().removeAll(target.keySet());
target.putAll(tmp);
patch
是您要添加到map
的{{1}}。
target
可以是包含所有键的相同值的patch
....
答案 4 :(得分:-1)
如果设置了某些条件,则扩展HashMap并使您的实现返回您的魔术值。