本文參考自:java8函數式編程
鏈接:https://blog.csdn.net/qq_28411869/article/details/82841706
public class demo1 {
public static void main(String[] args) {
Predicate<Integer> a = (x)->x<6; //接受一個參數返回布爾類型
System.out.println(a.test(5));
System.out.println(a.test(6));
BinaryOperator<Integer> addBinaryOperator = (x,y)->x+y; //接受2個參數,返回一個值,不聲明類型編輯不通過
System.out.println(addBinaryOperator.apply(3, 5));
BinaryOperator<String> addBinaryOperator2 = (x, y)->x+y; //接受2個參數,返回一個值
System.out.println(addBinaryOperator2.apply("3", "5"));
}
}
public class demo1 {
public static void main(String[] args) {
List<String> asList = Arrays.asList("","2","3","4","3");
//爲空的數量
long filter = asList.stream().filter(list -> list.isEmpty()).count(); //Stream 是用函數式編程方式在集合類上進行復雜操作的工具。
System.out.println(filter);
long filter2 = asList.stream()
.filter(list -> {
System.out.println(list); //會輸出
return list.isEmpty();
}).count();
/**
* 判斷一個操作是惰性求值還是及早求值很簡單:
* 只需看它的返回值。如果返回值是 Stream, 那麼是惰性求值;
* 如果返回值是另一個值或爲空,那麼就是及早求值。
* 使用這些操作的理 想方式就是形成一個惰性求值的鏈,最後用一個及早求值的操作返回想要的結果,這正是 它的合理之處。
*/
Stream<String> filter3 = asList.stream()
.filter(list -> {
System.out.println(list); //不會輸出
return list.isEmpty();
});
}
}