假设有一个对象类Position,其中包含属性positionId,我们可以使用Java 8中的Stream API来根据positionId属性去重,并转换为List输出,代码如下:

List<Position> positions = ... // 假设已经初始化了一个Position列表

List<Position> distinctPositions = positions.stream()
    .filter(distinctByKey(Position::getPositionId))
    .collect(Collectors.toList());

// 定义一个辅助方法,用于根据对象的某个属性进行去重
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
    Map<Object, Boolean> seen = new ConcurrentHashMap<>();
    return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}

上述代码中,我们使用filter()方法结合distinctByKey()方法来对Position对象进行去重。distinctByKey()方法返回一个Predicate对象,用于根据对象的某个属性进行去重。在这里,我们传入了一个Function对象,该对象用于提取Position对象的positionId属性。distinct()方法会根据该属性进行去重。最后,我们使用collect()方法将去重后的Position对象转换为List输出。

java使用stream的distinct,根据对象的positionId去重后转list输出。注意,不能重写equals方法。

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

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