给出一个班级
public class MyClass {
public int langId;
public int sectionId;
}
如果我有一个地图将LangId映射到具有该LangId的MyClass的所有实例:
Map<Integer, List<MyClass>> mapLangIdToListOfMyClass = new HashMap<>();
使用Java 8流,是否有一种简单的方法来使用前一个Map并创建一个新的Map,它将SectionId映射到具有SectionId的MyClass的所有实例:
Map<Integer, List<MyClass>> mapSectionIdToListOfMyClass = new HashMap<>();
答案 0 :(得分:6)
我认为你可以做到
Map<Integer, List<MyClass>> mapSectionIdToListOfMyClass = mapLangIdToListOfMyClass
.values()
.stream()
.flatMap(List::stream)
.collect(Collectors.groupingBy(j -> j.sectionId));