Java Lambda級聯表達式
又稱柯里化,把多個參數的函數轉化爲只有一個參數的多個函數級聯的形式,目的是函數標準化。
Function<Integer, Function<Integer, Integer>> fun = x -> y -> x + y;
System.out.println(fun.apply(2).apply(3)); // 5
Stream流操作
創建
|
相關方法 |
集合 |
Collenction.stream/paralleStream |
數組 |
Array.stream、Stream.of(Array) |
數字Stream |
IntStream/LongStream.range/rangeClosed |
|
Random.ints/longs/doubles |
自己創建 |
Stream.generate/iterate |
中間操作
|
相關方法的 |
無狀態操作 |
map/mapToXxx |
|
flatMap/flatMapToXxx |
|
filter |
|
peek |
|
unordered |
有狀態操作 |
distinct |
|
sorted |
|
limit/skip |
終止操作
|
相關方法 |
非短路操作 |
forEach/forEachOrderd |
|
collect/toArray |
|
reduce |
|
min/max/count |
短路操作 |
findFirst/findAny |
|
allMatch/anyMatch/noneMatch |
例子
String str = "my name is 007";
// 找出單詞大於2的單詞字母數
Stream.of(str.split(" "))
.filter(s -> s.length() > 2)
.map(s -> s.length())
.forEach(System.out::println); // 4 3
// 轉換爲一個一個字母進行輸出
Stream.of(str.split(" "))
.flatMap(s -> s.chars().boxed())
.forEach(i -> System.out.println((char) i.intValue()));