liu*_*923 5 java java-8 java-stream
我是 Java8 的新手。我要解决的一个问题是使用 Stream 将 Map> 转换为 Map。例如:
input: {A => [B, C, D], E => [F]}
output: {B => A, C => A, D => A, F => E}
Run Code Online (Sandbox Code Playgroud)
假设 List 中没有重复值。如何在java 8流中以优雅的方式做到这一点?
干杯,魏
假设
Map<String, List<Integer>> map = new HashMap<>();
Map<Integer,String> pam = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
这会做你想做的
map.entrySet().stream().forEach(e -> e.getValue().stream().forEach(v -> pam.put(v, e.getKey())));
Run Code Online (Sandbox Code Playgroud)
这利用了从Set<E>实现的事实。剩下的就是将东西插入正确的位置。stream()Collection
或者,按照@user140547(谢谢)的建议,一个更简单的解决方案
map.forEach((k,v) -> v.forEach(vv -> pam.put(vv, k)));
Run Code Online (Sandbox Code Playgroud)