Collectors.collectingAndThen多条件组合去重
时间: 2024-08-14 16:06:38 浏览: 51
java8 集合 多字段 分组 统计个数代码
5星 · 资源好评率100%
`Collectors.collectingAndThen` 是 Java Stream API 中的一个功能,它允许你在对集合进行收集操作之后,执行一个额外的操作,如转换、过滤或排序。这个方法主要用于处理复杂的数据转换过程,并支持在数据收集完成后基于特定条件进行去重。
当你需要基于某个条件对收集到的结果进行多条件组合去重时,可以先通过 `collect()` 方法收集数据,然后传递一个 `Function` 或 `UnaryOperator` 给 `collectingAndThen`,在这个函数中定义你的去重规则。例如,如果你想要同时基于两个字段进行去重,你可以首先按照这两个字段创建一个键,再利用 `toMap` 或者自定义 `ToDoubleConsumer` 来去除重复项。
这是一个简单的示例:
```java
List<Item> items = ... // 假设Item有name和category属性
Map<CombineKey, Item> uniqueItems = items.stream()
.collect(Collectors.toMap(
Item::getCombinedKey, // 提取唯一键的生成函数
Function.identity(), // 每个元素保持不变
(oldValue, newValue) -> oldValue, // 当冲突时保留第一个值
Collectors.unmodifiableMap() // 创建不可变的映射
));
```
这里假设有一个 `CombineKey` 类型的键类,用于表示两个字段的组合。
阅读全文