Java8里面主要包含了函數(shù)式編程。本文代碼地址.
目錄結(jié)構(gòu):
第一個大類是Function:
A. Predicate是返回boolean類型Function,執(zhí)行的是test。
B. Function是R apply(T t);主要用于返回結(jié)果。
C. Consumer是主要用于執(zhí)行的,void accept(T t);通常用于執(zhí)行異步方法。
D. 除去前面所有的傳入一個參數(shù),還有可以傳入兩個參數(shù)的,用法與之前的相同。
第二大類是接口:
A Java8的接口可以有默認的實現(xiàn)方法
B.可以傳入方法
C.接口之間的繼承行為
D.lambda中的變量應(yīng)該是final的,而不是隨意更改的
E.使用lambda分別實踐了Comparable和Comparator
Comparable通過改造元素本身來實現(xiàn)排序,Comparator通過編寫排序規(guī)則來實現(xiàn)排序
第三大類:stream
Stream是可以多線程,并發(fā)執(zhí)行的。
Stream可以對元素進行分組。
Java8通過新增Optional實現(xiàn)對空指針的處理。
Stream可以Partitioning,的意思就是可以按照要求給元素分組。
求和。
第一個大類是Function:
A. Predicate是返回boolean類型Function,執(zhí)行的是test,用法有以下幾種:

a. Predicate bonusLambdas = (emp)->emp.getRating()>10?true:false;
b. Predicate execLambdas = (emp)->emp.getName().startsWith("ad")?true:false;
Predicate andLambdas = bonusLambdas.and(execLambdas);
c. Predicate isEqualsLambdas = Predicate.isEqual(new Employee(7,"admins"));
d. employeeList.stream().filter(isEqualsLambdas).collect(Collectors.toList()).forEach(item ->{
System.out.println("isEqualsLambdas: "+item.getRating()+" "+item.getName());
});
e. 自帶的幾個函數(shù):or,and,isEqual,negate
B. Function是R apply(T t);主要用于返回結(jié)果,用法有以下幾種:

a. Funciton getMovie = s ->new Movie(s);
private Movie testMovie(String movie){
return getMovie.apply(movie);
}
b.stream中的map就是用Function: Stream map(Function mapper);
? 并對flatmap學(xué)習(xí).
c. Funtion是可以并運算的,andthen先執(zhí)行前者,后執(zhí)行后者。compose是先執(zhí)行后者,再執(zhí)行前者。
d. Function有個Identify的效果跟原來的一樣。



C. Consumer是主要用于執(zhí)行的,void accept(T t);通常用于執(zhí)行異步方法。

D. 除去前面所有的傳入一個參數(shù),還有可以傳入兩個參數(shù)的,用法與之前的相同。


第二大類是接口:
A Java8的接口可以有默認的實現(xiàn)方法
主要解決的是一個封裝問題,對于確定性的步驟,我們可以封裝成一個默認的實現(xiàn)。

B.可以傳入方法

C.接口之間的繼承行為
子類可以訪問父類的默認實現(xiàn)方法,當(dāng)有多個父類的方法相同可以使用super區(qū)分

D.lambda中的變量應(yīng)該是final的,而不是隨意更改的

E.使用lambda分別實踐了Comparable和Comparator
Comparable通過改造元素本身來實現(xiàn)排序,Comparator通過編寫排序規(guī)則來實現(xiàn)排序


第三大類:stream
Stream是可以多線程,并發(fā)執(zhí)行的,通過ForkJoinTask原理:https://blog.csdn.net/u013898617/article/details/79146389

Stream可以對元素進行分組:

Java8通過新增Optional實現(xiàn)對空指針的處理:

Stream可以Partitioning,的意思就是可以按照要求給元素分組:

求和:
