使用Java 8流反转Map结构

时间:2015-05-04 01:08:08

标签: java

给出一个班级

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<>();

1 个答案:

答案 0 :(得分:6)

我认为你可以做到

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