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

YCF*_*F_L -3 java java-8 java-stream

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

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

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

Ash*_*Ash 10

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

这将允许您这样做

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

statistics.getAverage();
statistics.getMax();
statistics.getMin();
statistics.getSum();
statistics.getCount();
Run Code Online (Sandbox Code Playgroud)

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


YCF*_*F_L 6

你可以Array.stream像这样使用:

//pass your method parameters in stream like this 
Arrays.stream(param).sum();
//--------------^---------
Run Code Online (Sandbox Code Playgroud)

这是一些简单的计算:

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();
}
Run Code Online (Sandbox Code Playgroud)

  • Upvote为您的答案.也可能:IntStream.of(test).sum(); (3认同)

kam*_*l23 5

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