要根据对象的 'positionId' 去重,可以使用 Stream 的 'map' 方法将每个对象映射为其 'positionId',然后使用 'distinct' 方法去重。最后可以使用 'collect' 方法将结果收集到一个 List 中。

这里演示一个例子,假设有一个 'Position' 类,它有一个 'positionId' 属性:

public class Position {
    private int positionId;
    // 其他属性和方法省略
}

现在我们有一个 'List' 对象列表,要根据 'positionId' 去重后转换为 'List',可以这样做:

List<Position> positions = ... // 原始的 Position 列表
List<Integer> distinctIds = positions.stream()
        .map(Position::getPositionId) // 映射为 positionId
        .distinct() // 去重
        .collect(Collectors.toList()); // 收集结果到 List 中

这样就可以得到一个去重后的 'positionId' 列表,类型为 'List'。如果需要得到去重后的 'Position' 对象列表,可以这样做:

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'。注意,这里使用的 'mergeFunction' 是将重复的 key 对应的 value 保留第一个,可以根据实际需求修改。

Java Stream 去重:根据 positionId 去重 Position 对象列表 (无需重写 equals 方法)

原文地址: https://www.cveoy.top/t/topic/lLb6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录