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