java collector的自定义实现方法

   2024-10-07 5190
核心提示:在Java中,我们可以使用Collectors类来创建自定义的收集器实现方法。以下是一个示例,展示了如何创建一个自定义的收集器,用于计

在Java中,我们可以使用Collectors类来创建自定义的收集器实现方法。以下是一个示例,展示了如何创建一个自定义的收集器,用于计算一组数字的平均值:

import java.util.List;import java.util.stream.Collector;import java.util.stream.Collectors;public class CustomCollector {    public static void main(String[] args) {        List<Integer> numbers = List.of(1, 2, 3, 4, 5);        double average = numbers.stream()                .collect(averageCollector());        System.out.println("Average: " + average);    }    public static Collector<Integer, AverageAccumulator, Double> averageCollector() {        return Collector.of(                AverageAccumulator::new,                AverageAccumulator::accumulate,                AverageAccumulator::combine,                AverageAccumulator::getAverage        );    }    static class AverageAccumulator {        private int sum;        private int count;        public AverageAccumulator() {            this.sum = 0;            this.count = 0;        }        public void accumulate(int number) {            sum += number;            count++;        }        public AverageAccumulator combine(AverageAccumulator other) {            this.sum += other.sum;            this.count += other.count;            return this;        }        public double getAverage() {            if (count == 0) {                return 0;            }            return (double) sum / count;        }    }}

在这个示例中,我们创建了一个名为averageCollector的自定义收集器方法,该方法返回一个Collector对象,该对象将使用AverageAccumulator来计算一组数字的平均值。AverageAccumulator类用于跟踪累加的总和和数量,并提供计算平均值的方法。最后,我们将这个自定义的收集器应用到一个整数列表上,以计算其平均值并输出结果。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号