Java-8将方法的多个参数传递给流

问题描述 投票:-3回答:3

考虑我有这个方法,它采用多个参数,我想做一些简单的计算,如count,sum,average,min,max,看看这个原生的例子:

public static void calculate(int... param) {
    int sum = 0;
    for (int i : param) {
        sum += i;
    }
    System.out.println(sum);
}

如何在Java-8 Stream中传递此参数(int... param)并进行此计算?

java java-8 java-stream
3个回答
10
投票

如果你想对这些参数进行多次检查,只使用一个流来看看IntStream.summaryStatistics()

这将允许您这样做

IntSummaryStatistics statistics = IntStream.of(param).summaryStatistics();

statistics.getAverage();
statistics.getMax();
statistics.getMin();
statistics.getSum();
statistics.getCount();

IntSummaryStatistics是一个非常有用的类,用于从流中获取多个统计信息。


6
投票

你可以像这样使用Array.stream

//pass your method parameters in stream like this 
Arrays.stream(param).sum();
//--------------^---------

这是一些简单的计算:

public static void calculate(int... param) {
    //calculate sum
    Arrays.stream(param).sum();

    //calculate average
    Arrays.stream(param).average().getAsDouble();

    //count number of paramettres
    Arrays.stream(param).count();

    //find maximum
    Arrays.stream(param).max();

    //find minimum
    Arrays.stream(param).min();

    //find the first element
    Arrays.stream(param).sorted().findFirst();
}

5
投票

也有可能:IntStream.of(param).sum();

© www.soinside.com 2019 - 2024. All rights reserved.