使用 java 8 流将集合转换为 Map<String,Collection<String>>

-3 java lambda java-stream

我希望将 a 转换Collection<Placement>为Map<String, Collection<String>>使用 java 流,其中Placement类如下

public class Placement {

   private String id;

   /* Links two placements, may be same for atleast 2 placements. */
   private String futureLinkId;
}
Run Code Online (Sandbox Code Playgroud)

地图的键是未来链接 id,值是放置 id。例如,如果有 2 个展示位置 p1 { id=1, futureLinkId=f1 }, p2 { id=2, futureLinkId=f1 },则输出应为Map { f1 - { id1, id2 } }

shm*_*sel 5

这实际上很简单,尽管其他人提供了令人费解的解决方案:

Map<String, List<String>> map = placements.stream()
        .collect(groupingBy(Placement::getFutureLinkId, mapping(Placement::getId, toList())));
Run Code Online (Sandbox Code Playgroud)