假设有一个对象类 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 去重:根据 PositionId 属性去重并转换为 List

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

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