如何使用Steam API Java 8将Map List <Map <String,Object >>的列表转换为Map Map <String,List <String >>的值列表

Pat*_*ick 0 java-8 java-stream

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

例如:

 [{"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"]}
Run Code Online (Sandbox Code Playgroud)

Rav*_*ala 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())));
Run Code Online (Sandbox Code Playgroud)