如何使用 Java Stream API 将 List 转换为 Map?
How to convert List to Map using Java Stream API?
我需要将 POJO
的 List
转换为 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(..);
}
我该怎么做?你能帮帮我吗?
您可以使用 groupingBy
:
Map<Integer, List<MyClass>> res = lst.stream()
.collect(Collectors.groupingBy(MyClass::getId));
旁白:对现有代码的小修正,避免未经检查的赋值使用:
List<MyClass> lst = new ArrayList<>();
我需要将 POJO
的 List
转换为 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(..);
}
我该怎么做?你能帮帮我吗?
您可以使用 groupingBy
:
Map<Integer, List<MyClass>> res = lst.stream()
.collect(Collectors.groupingBy(MyClass::getId));
旁白:对现有代码的小修正,避免未经检查的赋值使用:
List<MyClass> lst = new ArrayList<>();