如何转换地图列表的列表<map <string,object =“”>&gt;到地图的值列表<string,list <string>&gt;使用steam api java 8

时间:2018-05-01 02:54:01

标签: java-8 java-stream

我有一张地图清单。地图包含字符串作为键和&amp;作为价值的对象。最有可能的值也是字符串。我想按一个值进行分组,以便我将一组值作为键,另一组唯一值作为列表。实际上,地图列表是沙发基地选择数据。

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"]}

1 个答案:

答案 0 :(得分:4)

试一试。请注意,我的值为StringsObjects。在你的情况下,你需要明确地将它强制转换为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())));