在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) { Listnumbers = List.of(1, 2, 3, 4, 5); double average = numbers.stream() .collect(averageCollector()); System.out.println("Average: " + average); } public static Collector 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
类用于跟踪累加的总和和数量,并提供计算平均值的方法。最后,我们将这个自定义的收集器应用到一个整数列表上,以计算其平均值并输出结果。