Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分解代码,其中唯一的区别是流缩减操作_Java_Java Stream - Fatal编程技术网

Java 分解代码,其中唯一的区别是流缩减操作

Java 分解代码,其中唯一的区别是流缩减操作,java,java-stream,Java,Java Stream,我有一系列方法,其中唯一的区别是流减少操作: static Stream<TimeValues> avg(Stream<TimeValues> data, int batchSize) { return data .collect(SlidingCollector.batch(batchSize)) .stream() .map(tvl -> {

我有一系列方法,其中唯一的区别是流减少操作:

static Stream<TimeValues> avg(Stream<TimeValues> data, int batchSize) {
    return data
            .collect(SlidingCollector.batch(batchSize))
            .stream()
            .map(tvl -> {
                    OptionalDouble od = tvl.stream()
                    ...
                        .mapToDouble(tv -> tv.doubleValue())
                        .average(); // <-------
                    ...      
            });
}
static Stream avg(流数据,int batchSize){
返回数据
.collect(SlidingCollector.batch(batchSize))
.stream()
.map(tvl->{
OptionalDouble od=tvl.stream()
...
.mapToDouble(tv->tv.doubleValue())
.average();//{
OptionalDouble od=tvl.stream()
...
.mapToDouble(tv->tv.doubleValue())
.max();//和都是
函数
类型方法,因此:

static Stream<TimeValues> avg(Stream<TimeValues> data, int batchSize) {
    return reduce(data, batchSize, DoubleStream::average);
}

static Stream<TimeValues> max(Stream<TimeValues> data, int batchSize) {
    return reduce(data, batchSize, DoubleStream::max);
}

private static Stream<TimeValues> reduce(Stream<TimeValues> data, int batchSize,
                                         Function<DoubleStream, OptionalDouble> reducer) {
    return data
            .collect(SlidingCollector.batch(batchSize))
            .stream()
            .map(tvl -> {
                    OptionalDouble od = reducer.apply(tvl.stream()
                    ...
                        .mapToDouble(tv -> tv.doubleValue()));
                    ...      
            });
}
static Stream avg(流数据,int batchSize){
返回reduce(数据、批大小、DoubleStream::average);
}
静态流最大值(流数据,int batchSize){
返回reduce(数据、batchSize、DoubleStream::max);
}
私有静态流缩减(流数据,int batchSize,
功能减速机){
返回数据
.collect(SlidingCollector.batch(batchSize))
.stream()
.map(tvl->{
OptionalDouble od=减速器。应用(tvl.stream()
...
.mapToDouble(tv->tv.doubleValue());
...      
});
}
和都是
函数
类型方法,因此:

static Stream<TimeValues> avg(Stream<TimeValues> data, int batchSize) {
    return reduce(data, batchSize, DoubleStream::average);
}

static Stream<TimeValues> max(Stream<TimeValues> data, int batchSize) {
    return reduce(data, batchSize, DoubleStream::max);
}

private static Stream<TimeValues> reduce(Stream<TimeValues> data, int batchSize,
                                         Function<DoubleStream, OptionalDouble> reducer) {
    return data
            .collect(SlidingCollector.batch(batchSize))
            .stream()
            .map(tvl -> {
                    OptionalDouble od = reducer.apply(tvl.stream()
                    ...
                        .mapToDouble(tv -> tv.doubleValue()));
                    ...      
            });
}
static Stream avg(流数据,int batchSize){
返回reduce(数据、批大小、DoubleStream::average);
}
静态流最大值(流数据,int batchSize){
返回reduce(数据、batchSize、DoubleStream::max);
}
私有静态流缩减(流数据,int batchSize,
功能减速机){
返回数据
.collect(SlidingCollector.batch(batchSize))
.stream()
.map(tvl->{
OptionalDouble od=减速器。应用(tvl.stream()
...
.mapToDouble(tv->tv.doubleValue());
...      
});
}

方法
.average
.max
都是
函数
,您可以将它们存储在以下类型中:

Function<DoubleStream, OptionalDouble> avg = DoubleStream::average; // ie ds -> ds.average()
Function<DoubleStream, OptionalDouble> mx = DoubleStream::max;
因此,这些电话将是

Function<DoubleStream, OptionalDouble> avg = ds -> ds.average();
Function<DoubleStream, OptionalDouble> mx = DoubleStream::max;

method(...,10, avg);
method(...,10, mx);
函数avg=ds->ds.average();
函数mx=DoubleStream::max;
方法(…,10,平均值);
方法(…,10,mx);

方法
.average
.max
都是
函数
,您可以将它们存储在以下类型中:

Function<DoubleStream, OptionalDouble> avg = DoubleStream::average; // ie ds -> ds.average()
Function<DoubleStream, OptionalDouble> mx = DoubleStream::max;
因此,这些电话将是

Function<DoubleStream, OptionalDouble> avg = ds -> ds.average();
Function<DoubleStream, OptionalDouble> mx = DoubleStream::max;

method(...,10, avg);
method(...,10, mx);
函数avg=ds->ds.average();
函数mx=DoubleStream::max;
方法(…,10,平均值);
方法(…,10,mx);

Aside-您可能想将
data.collect(SlidingCollector.batch(batchSize))
移动到另一个方法。如果输入稍微假设一下,您也可能会这样做。谢谢@Naman-我会看一看。Aside-您可能想移动
data.collect(SlidingCollector.batchSize))
也可以使用另一种方法。如果使用稍微假设的输入,您也可以使用。谢谢@Naman-我会看一看。谢谢@Andreas-我尝试使用DoubleStream::reduce(),但只能使用Double::min和Double::MaxThreak@Andreas-我尝试使用DoubleStream::reduce())但只能使其与Double::min和Double::max一起工作