Java Stream 去重:根据 positionId 去重 Position 对象列表 (无需重写 equals 方法)
要根据对象的 'positionId' 去重,可以使用 Stream 的 'map' 方法将每个对象映射为其 'positionId',然后使用 'distinct' 方法去重。最后可以使用 'collect' 方法将结果收集到一个 List 中。
这里演示一个例子,假设有一个 'Position' 类,它有一个 'positionId' 属性:
public class Position {
private int positionId;
// 其他属性和方法省略
}
现在我们有一个 'List
List<Position> positions = ... // 原始的 Position 列表
List<Integer> distinctIds = positions.stream()
.map(Position::getPositionId) // 映射为 positionId
.distinct() // 去重
.collect(Collectors.toList()); // 收集结果到 List 中
这样就可以得到一个去重后的 'positionId' 列表,类型为 'List
List<Position> distinctPositions = positions.stream()
.collect(Collectors.toMap(Position::getPositionId, p -> p, (p1, p2) -> p1))
.values()
.toList();
这里使用 'toMap' 方法将每个 'Position' 对象映射为它的 'positionId' 作为 key,然后使用 'mergeFunction' 来处理重复的 key。最后使用 'values' 方法得到去重后的 'Position' 对象列表,类型为 'List
原文地址: https://www.cveoy.top/t/topic/lLb6 著作权归作者所有。请勿转载和采集!