Java8 新特性 第一個大類是Function: 第二大類是接口: 第三大類:stream

Java8裏面主要包含了函數式編程。本文代碼地址.

目錄結構:

第一個大類是Function:

A. Predicate是返回boolean類型Function,執行的是test。

B. Function是R apply(T t);主要用於返回結果。

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

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

第二大類是接口:

A Java8的接口可以有默認的實現方法

B.可以傳入方法

C.接口之間的繼承行爲

D.lambda中的變量應該是final的,而不是隨意更改的

E.使用lambda分別實踐了Comparable和Comparator

Comparable通過改造元素本身來實現排序,Comparator通過編寫排序規則來實現排序

第三大類:stream

Stream是可以多線程,併發執行的。

Stream可以對元素進行分組。

Java8通過新增Optional實現對空指針的處理。

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

求和。

第一個大類是Function:

A. Predicate是返回boolean類型Function,執行的是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. 自帶的幾個函數:or,and,isEqual,negate

B. Function是R apply(T t);主要用於返回結果,用法有以下幾種:

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學習.

c. Funtion是可以並運算的,andthen先執行前者,後執行後者。compose是先執行後者,再執行前者。

d. Function有個Identify的效果跟原來的一樣。

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

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

第二大類是接口:

A Java8的接口可以有默認的實現方法

主要解決的是一個封裝問題,對於確定性的步驟,我們可以封裝成一個默認的實現。

B.可以傳入方法

C.接口之間的繼承行爲

子類可以訪問父類的默認實現方法,當有多個父類的方法相同可以使用super區分

D.lambda中的變量應該是final的,而不是隨意更改的

E.使用lambda分別實踐了Comparable和Comparator

Comparable通過改造元素本身來實現排序,Comparator通過編寫排序規則來實現排序

第三大類:stream

Stream是可以多線程,併發執行的,通過ForkJoinTask原理:https://blog.csdn.net/u013898617/article/details/79146389

Stream可以對元素進行分組:

Java8通過新增Optional實現對空指針的處理:

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

求和:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章