我有一张地图清单。地图包含字符串作为键和&作为价值的对象。最有可能的值也是字符串。我想按一个值进行分组,以便我将一组值作为键,另一组唯一值作为列表。实际上,地图列表是沙发基地选择数据。
e.g:
[{"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"]}
答案 0 :(得分:4)
试一试。请注意,我的值为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())));