java 将一个对象list 转化为map key为某一对象的某个属性值,value为同一属性值的对象list
时间: 2024-03-27 19:37:59 浏览: 24
可以使用Java 8的stream和Collectors工具类来实现这个功能,具体的代码如下:
假设我们有一个Student类,有两个属性:id和name,我们要将它们的List转化为Map,以id为key,以相同id的所有Student对象组成的List为value。
```java
public class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
```
```java
List<Student> students = new ArrayList<>();
students.add(new Student(1, "张三"));
students.add(new Student(1, "李四"));
students.add(new Student(2, "王五"));
students.add(new Student(3, "赵六"));
Map<Integer, List<Student>> studentMap = students.stream().collect(Collectors.groupingBy(Student::getId));
```
上面的代码中,我们使用了stream的groupingBy方法,以Student对象的id属性为key,将相同id的Student对象组成的List作为value,最终生成一个Map<Integer, List<Student>>对象。