2017-03-03 34 views
-4

考虑我的这个方法,采取多种参数,我想作一些简单的计算像计数总和平均分钟最大,看看这个本土例如:的Java-8通法的多个参数到流

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

如何传递这个参数(int... param)在Java-8流,使这个计算?

回答

9

如果你想要做的这些PARAMS多个检查和只用一个流看看吧IntStream.summaryStatistics()

这将允许你这样做

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

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

IntSummaryStatistics是获得多个统计出来一个流的非常有用的类。

5

您可以使用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(); 
} 
+3

Upvote for your answer。还有可能:IntStream.of(test).sum(); – kamehl23

+0

哦这是好的@ kamehl23你可以发布它像一个答案也许这可以帮助其他人 –

+1

你有没有看过你什么时候有IntStream你可以使用https://docs.oracle.com/javase/8/docs/api/ java/util/stream/IntStream.html#summaryStatistics--,这将返回一个对象,它会给你Sum,Average ect – Ash

4

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