如何使用java Lambdas獲得數組的產品。我知道C#它是這樣的:使用java獲取產品列表Lambdas
result = array.Aggregate((a, b) => b * a);
編輯:作出這個問題更加清晰。
如何使用java Lambdas獲得數組的產品。我知道C#它是這樣的:使用java獲取產品列表Lambdas
result = array.Aggregate((a, b) => b * a);
編輯:作出這個問題更加清晰。
你提到的兩個數組和列表,所以這裏是你會怎麼做兩個:
Integer intProduct = list.stream().reduce(1, (a, b) -> a * b);
Integer intProduct = Arrays.stream(array).reduce(1, (a, b) -> a * b); // Integer[]
int intProduct = Arrays.stream(array).reduce(1, (a, b) -> a * b); // int[]
版本是否如果列表/陣列可能是空的一個缺點:第一個參數, 1
在這種情況下,如果列表或數組是空的,所以如果你不希望這樣的行爲,有一個版本,將返回Optional<Integer>
,OptionalInt等:
Optional<Integer> intProduct = list.stream().reduce((a, b) -> a * b);
Optional<Integer> intProduct = Arrays.stream(array).reduce((a, b) -> a * b); // Integer[]
OptionalInt intProduct = Arrays.stream(array).reduce((a, b) -> a * b); // int[]
將被作爲結果返回這操作上被稱爲「減少」。這裏的教程:https://docs.oracle.com/javase/tutorial/collections/streams/reduction.html – dnault