Java Lambda級聯表達式(柯里化)與Stream流操作

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()));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章