不過既來之則安之吧
JDK7時就有聽過一些Java大師說到Java終於要出Lambda式寫法
在那之前我大概都是透過C#.Net的LINQ和Haskell去學習Lambda寫法
雖然相比之下,C#.Net LINQ還是剽悍許多,Haskell更加狂
或許這是Java算是有誠意的更新吧?XDDD
testProject;
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Test {
public static void main(String[] args) {
// 產生0-50 to ArrayList
ArrayList<Integer> list = IntStream.range(0, 51).collect(ArrayList<Integer>::new, ArrayList::add,
ArrayList::addAll);
System.out.println("產生0-50數字");
// 走訪n
list.forEach(System.out::println);
// Filter n is odd
System.out.println("取奇數");
list.stream().filter(n -> n % 2 != 0).collect(Collectors.toList()).forEach(System.out::print);
// Filter n is even
System.out.println("取偶數");
list.stream().filter(n -> n % 2 == 0).collect(Collectors.toList()).forEach(System.out::println);
// get summary statistics
System.out.println("取得個數, 最小值, 最大值, 總和以及平均數\n" + list.stream().mapToInt(x -> x).summaryStatistics());
// get the array sum
System.out.println("取得總和\n" + list.stream().mapToInt(x -> x).summaryStatistics().getSum());
}
}
執行結果: