list 对象转Map
时间: 2023-07-22 09:28:04 浏览: 91
List转换成Map工具类的简单实例
List 对象转 Map 可以使用 Java 8 的 Stream API,具体步骤如下:
假设有一个 List 对象,包含了一组学生信息,每个学生有学号、姓名、年龄、性别等属性,定义如下:
```java
public class Student {
private String id;
private String name;
private int age;
private String gender;
// 省略 getter 和 setter 方法
}
List<Student> students = new ArrayList<>();
students.add(new Student("001", "张三", 20, "男"));
students.add(new Student("002", "李四", 21, "女"));
students.add(new Student("003", "王五", 22, "男"));
```
要将 List 转为 Map,以学号为键,学生对象为值,可以使用以下代码:
```java
Map<String, Student> studentMap = students.stream().collect(Collectors.toMap(Student::getId, Function.identity()));
```
上述代码中,使用 `Collectors.toMap()` 方法将 List 转为 Map,其中 `Student::getId` 表示以学号属性作为 Map 的 key,`Function.identity()` 表示以当前元素作为 Map 的 value。
另外,如果 List 中存在多个元素的 key 相同,可以通过第三个参数指定 value 的合并方式,例如:
```java
Map<String, Student> studentMap = students.stream().collect(Collectors.toMap(Student::getId, Function.identity(), (oldValue, newValue) -> newValue));
```
上述代码中,当 key 相同时,将 value 替换为新的元素。
注意:在使用 `Collectors.toMap()` 方法时,List 中的元素不能为 null,否则会抛出 NullPointerException 异常。
阅读全文