我需要将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(..);
}
我该怎么做?你能帮我吗?
答案 0 :(得分:5)
您可以使用groupingBy
:
Map<Integer, List<MyClass>> res = lst.stream()
.collect(Collectors.groupingBy(MyClass::getId));
旁边:现有代码中的较小修正,请避免使用以下未检查的赋值:
List<MyClass> lst = new ArrayList<>();