java List<DO> 中获取name1和name2 分别的列表 组合成一个列表 去重 lamda
时间: 2024-11-29 22:38:16 浏览: 6
在Java中,如果你有一个`List<DO>`对象,其中`DO`是一个包含"name1"和"name2"属性的对象,你可以使用Lambda表达式以及Java 8引入的Stream API来实现这个需求。首先假设`DO`类有类似这样的结构:
```java
class DO {
String name1;
String name2;
// getters and setters...
}
```
想要获取两个字段的值并去重,可以这样做:
```java
List<String> combinedList = list.stream() // stream of DO objects
.map(d -> new String[]{d.getName1(), d.getName2()})
.flatMap(Arrays::stream) // flatten the arrays into a single stream of names
.distinct() // remove duplicates
.collect(Collectors.toList()); // collect them into a new list
// 现在combinedList就是[name11, name12, ..., name21, name22, ...] 的去重版本
```
这里的关键点在于`map`用于将每个DO对象转换为包含两个名称的数组,`flatMap`则将所有数组合并成一个流,然后`distinct`去除重复项,最后`collect`收集结果到一个新的列表中。
阅读全文