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

时间:2017-03-03 10:45:51

标签: java java-8 java-stream

考虑我有这个方法,它采用多个参数,我想做一些简单的计算,如计数总和平均,< strong> 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)并进行此计算?

3 个答案:

答案 0 :(得分:10)

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

这将允许您这样做

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

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

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

答案 1 :(得分: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();
}

答案 2 :(得分:5)

也可以:import re print(re.split(r',(?![^[]*\])', 'word1[a,b,c],word2[e,f,g],word3'))