如何在Java中的LinkedHashMap中使用特定键中的旧值替换值

时间:2018-08-17 05:21:06

标签: java linkedhashmap key-value-store

我有一个旧值存储为map {key,value}。 我想通过对其进行计算来更新现有值,例如当其为整数时将其增加10; 映射{key,value + 10}

2 个答案:

答案 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) ;