我有一个旧值存储为map {key,value}。 我想通过对其进行计算来更新现有值,例如当其为整数时将其增加10; 映射{key,value + 10}
答案 0 :(得分:5)
使用computeIfPresent
(示例假设为Map<String, Integer>
)
map.computeIfPresent("key", (String key, Integer value) -> value + 10);
此方法允许您计算映射到给定键的新值。在上面的示例中,现有值将替换为oldValue + 10
。
Map.computeIfPresent
:
如果指定键的值存在且不为null,则尝试根据给定键及其当前映射值来计算新映射。
如果您需要upsert,则正确使用的方法是merge
,如果键尚未与映射中的值关联,则会插入该方法:
map.merge("key", 1, (Integer oldValue, Integer newValue) -> oldValue + newValue);
在该示例中,如果1
中不存在"key"
,则map
是要添加的新值。如果"key"
在映射中不是新的,则调用第三个参数中的函数以计算更新后的值(在此示例中,它将仅将新值增加其中的值)。
答案 1 :(得分:-1)
这可以解决问题
Map<Integer, Integer> linkedHashMap = new LinkedHashMap<Integer, Integer>();
linkedHashMap.put(/*your_desired_key*/, linkedHashMap.get(/*your_desired_key*/) + 10) ;