stream流对一个对象集合处理,收集为其中两个属性的集合,这两个属性可能重复
时间: 2024-05-05 11:16:16 浏览: 92
,需要去重后返回一个新的集合。
可以使用Java8的Stream API中的map()方法和distinct()方法进行处理。假设有一个对象集合List<MyObject>,其中MyObject类有两个属性name和age,我们需要收集所有对象的name和age属性值,去重后返回一个新的集合,可以使用以下代码:
```
List<String> namesAndAges = myList.stream()
.map(obj -> obj.getName() + obj.getAge())
.distinct()
.collect(Collectors.toList());
```
这里使用了map()方法将每个对象的name和age属性值拼接成一个字符串,然后使用distinct()方法去重,最后使用collect()方法将结果收集到一个新的List中。如果需要分别收集name和age,可以使用以下代码:
```
List<String> names = myList.stream()
.map(MyObject::getName)
.distinct()
.collect(Collectors.toList());
List<Integer> ages = myList.stream()
.map(MyObject::getAge)
.distinct()
.collect(Collectors.toList());
```
这里使用了MyObject类的方法引用来获取name和age属性值,然后分别使用distinct()方法去重,最后将结果分别收集到两个新的List中。
阅读全文