List<Map>聚合为单个Map<List>
2023-06-13 09:11:18 时间
前两天有人给我的项目stream-query
提交了PR
,新增了一个Collector
实现
我稍微研究了一下,发现与Collectors
原生命名风格不统一,且不具备Collectors
包下面的对象通用性,于是就移除了
但这个功能是可以保留的
我的实现如下:
@Test
void testReducing() {
Set<Map<String, Integer>> nameScoreMapList = Stream.of(
new HashMap<String, Integer>() {{
put("苏格拉底", 1);
put("特拉叙马霍斯", 3);
}},
Collections.singletonMap("苏格拉底", 2),
Collections.singletonMap("特拉叙马霍斯", 1),
Collections.singletonMap("特拉叙马霍斯", 2)
).collect(java.util.stream.Collectors.toSet());
Collector<Map<String, Integer>, ?, Map<String, List<Integer>>> reducing = Collectors.reducing(new HashMap<>(),
value -> {
Map<String, List<Integer>> result = new HashMap<>();
value.forEach((k, v) -> result.computeIfAbsent(k, i -> new ArrayList<>()).add(v));
return result;
}, (l, r) -> {
r.forEach((k, v) -> l.computeIfAbsent(k, i -> new ArrayList<>()).addAll(v));
return l;
}
);
Assertions.assertEquals(new HashMap<String, List<Integer>>() {{
put("苏格拉底", Arrays.asList(1, 2));
put("特拉叙马霍斯", Arrays.asList(3, 1, 2));
}}, nameScoreMapList.stream().collect(reducing));
}
List<Map<KEY,VALUE>>
转换为Map<KEY,List<VALUE>>
,相同的key
值累加处理
相关文章
- java map 二维数组_Java二维数组实现简单Map
- 利用HashSet给list去重[通俗易懂]
- Python: list列表的内置方法介绍
- Java9-day03【List、Set】课后习题
- dropdown和dropdownlist_list的clear方法
- Map和Set的区别_list与set的区别
- List初始化、集合复制
- list,tensor,numpy相互转化
- fastjson把map转json_fastjson转list对象
- 【Flutter】Dart 数据类型 List 集合类型 ( 定义集合 | 初始化 | 泛型用法 | 初始化后添加元素 | 集合生成函数 | 集合遍历 )
- 【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )
- java中的list
- ORA-30489: Cannot have more than one rollup/cube expression list ORACLE 报错 故障修复 远程处理
- Redis基本数据类型List常用操作命令
- MySQL中的JSON字段List成员检查
- struts2:OGNL表达式,遍历List、Map集合;投影的使用详解编程语言
- Java List/Set/Map详解编程语言
- Java List.contains()方法:判断列表中是否包含指定元素
- 利用Redis实现List元素的排序(redis排序list)
- Redis 轻松存储列表数据:使用 Redis 保存 List 的方法(redis保存list)
- 深入浅出Redis查看Map(redis查看map)
- Mastering List Operations in Redis: Tips and Tricks for Optimal Performance(redis操作list)
- Oracle中使用List命令查看表结构(list命令oracle)
- 监测redis List动态稳定性突破极限(监听redis list)
- 使用Redis实现List存储(向redis中存list)
- 使用Redis集合和List实现高效存储(redis集合和list)
- 使用Redis轻松获取List元素(redis 返回list)
- Redis中计时的Map超时的挑战(redis 超时的map)
- Json数据转换list对象实现思路及代码
- Python中列表(list)操作方法汇总