使用Java8流的反向映射结构

使用Java8流的反向映射结构,java,Java,上课 public class MyClass { public int langId; public int sectionId; } 如果我有一个映射,将一个LangId映射到所有具有该LangId的MyClass实例: Map<Integer, List<MyClass>> mapLangIdToListOfMyClass = new HashMap<>(); Map-mapLangIdToListOfMyClass=new-Hash

上课

public class MyClass {
    public int langId;
    public int sectionId;
}
如果我有一个映射,将一个LangId映射到所有具有该LangId的MyClass实例:

Map<Integer, List<MyClass>> mapLangIdToListOfMyClass = new HashMap<>();
Map-mapLangIdToListOfMyClass=new-HashMap();
使用Java 8 streams,是否有一种简单的方法来使用以前的映射并创建一个新映射,将SectionId映射到具有该SectionId的MyClass的所有实例:

Map<Integer, List<MyClass>> mapSectionIdToListOfMyClass = new HashMap<>();
Map-mapSectionIdToListOfMyClass=newhashmap();
我想你能做到

Map<Integer, List<MyClass>> mapSectionIdToListOfMyClass = mapLangIdToListOfMyClass
                               .values()
                               .stream()
                               .flatMap(List::stream)
                               .collect(Collectors.groupingBy(j -> j.sectionId));
Map-mapSectionIdToListOfMyClass=mapLangIdToListOfMyClass
.values()
.stream()
.flatMap(列表::流)
.collect(收集器.groupingBy(j->j.sectionId));

标记为duplicate的可能重复@SobiborTreblinka操作不是反转键和值,而是基于不同字段进行分组。@pbabcdefp,很好的调用,不幸的是,我没有收回标记的能力