使用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,很好的调用,不幸的是,我没有收回标记的能力