不用遍历的方式在对象集合list中抽取属性集合转化为map或list
时间: 2024-05-13 17:19:29 浏览: 79
将对象属性转化为map集合的工具类
可以使用Java 8中的Stream API来实现,具体方法如下:
1. 如果要抽取对象的某一个属性,可以使用map方法将对象转换成属性,然后使用collect方法将属性收集成一个集合。例如,假设有一个Student类,其中包含name和age两个属性,需要将所有学生的姓名抽取出来转化成一个List,可以使用以下代码:
```
List<Student> students = ...;
List<String> names = students.stream()
.map(Student::getName)
.collect(Collectors.toList());
```
2. 如果要抽取对象的多个属性,可以将多个属性封装成一个对象,然后使用map方法将对象转换成属性集合,最后使用collect方法将属性集合收集成一个集合。例如,假设有一个Student类,其中包含name和age两个属性,需要将所有学生的姓名和年龄抽取出来转化成一个Map,可以使用以下代码:
```
List<Student> students = ...;
Map<String, Integer> nameAgeMap = students.stream()
.map(s -> new AbstractMap.SimpleEntry<>(s.getName(), s.getAge()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
```
这里使用了AbstractMap.SimpleEntry类来封装属性,然后使用toMap方法将属性集合转化为Map。如果属性集合中存在重复的属性,可以使用toMap方法的第三个参数来指定如何处理重复的属性。
阅读全文