Lambda常見用法總結(jié)

一、Lambda優(yōu)化以下問題

1.解決原有匿名內(nèi)部類語法冗余問題

2.解決作用域指向不明確問題

3.解決多余代碼產(chǎn)生的“高度”問題

二、函數(shù)式接口

?1.Java API中有的接口只有一個方法,大多數(shù)回調(diào)接口都擁此個特征:比如Runnable接口和Comparator接口。因此只擁有一個方法的接口稱為函數(shù)式接口;

?2.lambda為了使匿名接口不在產(chǎn)生冗余代碼,使用“箭頭”結(jié)構(gòu)表示匿名接口(以下會有示例),同時JAVA SE 8中新增java.util.function包提供了常用的函數(shù)式接口:

????? Predicate——接收T對象并返回boolean

????? Consumer——接收T對象,不返回值

????? Function——接收T對象,返回R對象

????? Supplier——提供T對象(例如工廠),不接收值

????? UnaryOperator——接收T對象,返回T對象

????? BinaryOperator——接收兩個T對象,返回T對象

三、使用和特性

1.語法:lambda 表達(dá)式的語法由 【(參數(shù)列表)箭頭符號-> {函數(shù)體};】組成,例:(String s) -> { System.out.println(s); }


1

2.函數(shù)式接口的類型自動推導(dǎo):

?lambda可自動推導(dǎo)目標(biāo)類型

例:JavaSE7中的對象:


2


3

JavaSE8 lambda簡化后:


4


????????*同樣的函數(shù)體,但表示了不同的類型;第一個lambda表達(dá)式【() -> "done"】是Callable的實例,而第二個lambda表????達(dá)式【() -> "done"】則是PrivilegedAction的實例。

3.當(dāng)函數(shù)體有返回值時,可省略“return”關(guān)鍵字,省略”;”分號

????例1:接收一個參數(shù)(y),返回其2倍的值?

????????( y ) -> 2 * y

? ?例2:? 一個接收String和Object并返回int的函數(shù)類型可以被表示為

????? (String,Object) -> int

4.簡化過程

????*當(dāng)只有一個參數(shù)時,可省略類型

????*當(dāng)只有一行代碼語句時可省略分號和 { },多行語句時不可省略

????*當(dāng)只有一個返回值時可省略return

????????????(String x)->{ System.out.print( x ); }?

????????????????可簡化為:(x)-> System.out.print( x )

?5. 詞法作用域

????? ? *在lambda函數(shù)體中,“this”會指向外部,且不會繼承超類的變量。

?6. lambda 表達(dá)式對 值 封閉,對 變量 開放:


5


?

四、JDK1.8其它相關(guān)

1.lambda集合遍歷:

????? *List集合:

????? list.forEach(c->System.out.println(c));

????? *map集合

????? map.forEach((key,value)->System.out.println("key:" + key + " value:" + value));

2.方法引用

??Java SE8

????????提供的方法引用有很多種,需要在類名或?qū)ο笈c方法之間加入雙冒號“::“表示,它們的語法如下:

????????靜態(tài)方法引用:ClassName::methodName

????????實例上的實例方法引用:instanceReference::methodName

????????超類上的實例方法引用:super::methodName

????????類型上的實例方法引用:ClassName::methodName

????????構(gòu)造方法引用:Class::new

????????數(shù)組構(gòu)造方法引用:TypeName[]::new


6
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容