Методы .average
и .max
оба Function<DoubleStream, OptionalDouble>
, вы можете хранить их в таком виде:
Function<DoubleStream, OptionalDouble> avg = DoubleStream::average; // ie ds -> ds.average()
Function<DoubleStream, OptionalDouble> mx = DoubleStream::max;
Используйте его в качестве параметра и используйте .apply
с DoubleStream
как параметр
static Stream<TimeValues> method(Stream<TimeValues> data, int batchSize,
Function<DoubleStream, OptionalDouble> fct) {
return data
.collect(SlidingCollector.batch(batchSize))
.stream()
.map(tvl -> {
OptionalDouble od = fct.apply(tvl.stream().mapToDouble(Number::doubleValue));
});
}
Так что звонки будут
Function<DoubleStream, OptionalDouble> avg = ds -> ds.average();
Function<DoubleStream, OptionalDouble> mx = DoubleStream::max;
method(...,10, avg);
method(...,10, mx);