假设我们有一个包含多个对象的 List,每个对象都有一个属性 positionId,我们要根据这个属性去重后转成 List 输出,可以使用 Stream 的 distinct 方法和 Collectors 的 toList 方法实现:

List<Position> positions = ...; // 原始的 Position 对象列表

List<Position> distinctPositions = positions.stream()
        .distinct()
        .collect(Collectors.toList());

// 输出去重后的 Position 对象列表
distinctPositions.forEach(System.out::println);

在上面的代码中,我们调用了 Stream 的 distinct 方法对对象列表进行去重操作,然后使用 Collectors 的 toList 方法将去重后的结果转成 List 输出。

需要注意的是,为了使 Stream 的 distinct 方法能够正常工作,我们需要在 Position 类中重写 equals 方法和 hashCode 方法,以便比较两个对象是否相等。例如:

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Position)) return false;
        Position position = (Position) o;
        return getPositionId() == position.getPositionId();
    }

    @Override
    public int hashCode() {
        return Objects.hash(getPositionId());
    }
}
Java 使用 Stream 去重 List 对象:根据 positionId 属性去重

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

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