java List<DO> 中获取name1和name2组成的全集字符串列表 去重 lamda
时间: 2024-11-29 18:38:15 浏览: 16
在Java中,你可以使用`List<DO>`(假设`DO`是一个包含`name1`和`name2`属性的对象)和Lambda表达式来实现这个需求。首先,你需要有一个`DO`类,例如:
```java
public class DO {
private String name1;
private String name2;
// getters and setters...
}
```
然后,可以使用Java 8的Stream API处理`List<DO>`,结合`distinct()`去重,以及`map()`函数转换每个元素的`name1`和`name2`组合成字符串,最后收集到一个新的列表:
```java
List<String> distinctNames = list.stream()
.map(doObj -> doObj.getName1() + doObj.getName2())
.distinct() // 去重操作
.collect(Collectors.toList());
```
这里`getName1()`和`getName2()`是`DO`类中获取这两个字段值的方法。
如果你想确保两个字段都是非空并且只包含有效字符,可以在`map()`前加上条件判断:
```java
list.stream()
.filter(doObj -> !Objects.isNull(doObj.getName1()) && !Objects.isNull(doObj.getName2()))
.map(doObj -> doObj.getName1().trim() + doObj.getName2().trim())
.distinct()
.collect(Collectors.toList());
```
这里使用了`trim()`去除两端空白,并使用`Objects.isNull()`检查是否为空。
阅读全文