在HashMap中一次更新所有值

时间:2013-05-16 13:15:00

标签: java hashmap

我有HashMapKeys - Values

在某些情况下,我想将所有值更新为单值而不管密钥。

是否有任何util或预定义方法可以执行此操作,而不使用for循环?

有什么建议吗?

5 个答案:

答案 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并使您的实现返回您的魔术值。