如何使用Java Stream API将列表转换为Map?

我需要将List中的POJO转换为Map<Integer,List<MyClass>>,其中键是MyClass中的值。以下代码如下所示:

public class MyClass {
    public int id;         // this field value must be key of map.
    public String name;
}

public static void main(String... args) {
    List<MyClass> lst = new ArrayList();
    lst.add(new MyClass(1,"John"));
    lst.add(new MyClass(1,"Peter"));
    lst.add(new MyClass(2,"Sarah"));

    Map<Integer,List<MyClass>> res = lst.collect(..);
}

我该怎么做?你能帮我吗?

xinfukanghe 回答:如何使用Java Stream API将列表转换为Map?

您可以使用groupingBy

Map<Integer,List<MyClass>> res = lst.stream()
            .collect(Collectors.groupingBy(MyClass::getId));

旁边:现有代码中的较小修正,请避免使用以下未检查的赋值:

List<MyClass> lst = new ArrayList<>();
本文链接:https://www.f2er.com/3122965.html

大家都在问