stream 自定义distinct
时间: 2023-10-18 20:21:57 浏览: 53
Distinct自定义去重
如果您想对流中的元素进行去重操作,可以使用`distinct()`方法。如果您需要自定义去重规则,则可以使用`distinct()`的重载版本,该版本接受一个`Function`类型的参数,用于自定义去重规则。
例如,假设您有一个`List`对象包含以下元素:
```java
List<String> list = Arrays.asList("apple", "banana", "cherry", "apricot", "blueberry", "cherry");
```
您想要使用自定义规则对这些元素进行去重,只保留那些长度大于等于 6 的元素。您可以使用以下代码:
```java
List<String> distinctList = list.stream()
.distinct(s -> s.length() >= 6 ? s.substring(0, 6) : s)
.collect(Collectors.toList());
```
在上面的代码中,我们使用了一个 lambda 表达式作为`distinct()`方法的参数。该 lambda 表达式根据元素的长度来判断是否需要去重。如果元素的长度大于等于 6,则只保留前 6 个字符用于去重;否则,使用整个字符串进行去重。
运行上面的代码后,`distinctList`中的元素将只有`apple`、`banana`、`cherry`和`blueberry`。`apricot`被过滤掉了,因为它与`apple`的前 6 个字符相同。
阅读全文