List<Map<String, Object>> 使用stream替换map指定的value值
时间: 2023-10-14 12:13:59 浏览: 149
通过一个map替换字符串中指定的字符变量方法
5星 · 资源好评率100%
您可以使用Java 8中的Streams API和Lambda表达式来替换Map中指定的value值。示例代码如下:
```java
List<Map<String, Object>> list = new ArrayList<>();
// 添加Map对象到列表中
Map<String, Object> map1 = new HashMap<>();
map1.put("name", "Alice");
map1.put("age", 25);
map1.put("salary", 5000.0);
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("name", "Bob");
map2.put("age", 30);
map2.put("salary", 8000.0);
list.add(map2);
// 使用Stream替换Map中指定的value值
list.stream().forEach(map -> {
map.compute("salary", (key, value) -> (double) value * 1.1);
});
// 打印修改后的Map列表
list.stream().forEach(System.out::println);
```
这段代码将List中所有Map对象的salary键对应的value乘以1.1。
注意,使用compute方法来修改Map的value需注意以下几点:
- compute方法需要传入两个参数:key和计算函数。
- 计算函数必须是线程安全的,不然在多线程情况下可能导致错误。
- 如果计算函数返回null,则会从Map中删除该键值对。
阅读全文