Java 使用 Stream 去重 List 对象:根据 positionId 属性去重
假设我们有一个包含多个对象的 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());
}
}
原文地址: https://www.cveoy.top/t/topic/lLbR 著作权归作者所有。请勿转载和采集!