java-8 - 如何转换地图列表列表
问题描述
我有一张地图清单。该地图包含字符串作为键和对象作为值。最有可能的值也是字符串。我想按一个值分组,以便获得一组值作为键,另一组唯一值作为列表。实际上,地图列表是沙发库选择数据。
例如:
[{"id":"1", "status":"pending"},{"id":"2", "status":"download"},{"id":"3", "status":"pending"},{"id":"4", "status":"pending"}, {"id":"5", "status":"ready"},{"id":"6", "status":"download"}] => {"pending":["1","3","4"], "download":["2","6"], "ready":["5"]}
解决方案
试试这个。请注意,我的价值观Strings
与Objects
您不同。在您的情况下,您需要明确地将其转换为String
喜欢,
s -> (String) s.get("status")
s -> (String) s.get("id")
Map<String, List<String>> idsByStatus = listOfMap.stream().collect(
Collectors.groupingBy(s -> s.get("status"), Collectors.mapping(s -> s.get("id"), Collectors.toList())));
推荐阅读
- java - 使用 Optional.of() 方法进行方法链接是个好主意吗?
- java - 区分用户输入的时间和当前时间,将两个时间与 if-else 或合适的循环进行比较
- android - 在OpenGL中将蒙版应用于视频
- c# - VB.net 排序列然后排序但保留行位置
- javascript - 无法通过 jQuery 选择器读取来自 HTML 的表 td
- java - JavaFX Dialog getResult() 方法未返回正确的泛型类型
- angularjs - 动态添加所需属性到angularjs中的输入字段
- php - 搜索过滤器 laravel 问题,从获取值
- mysql - 从在线服务器恢复截断的表
- vue.js - 验证为真后如何在vue js中隐藏错误消息?