Lambda表達(dá)式是java 8 帶來的革新.
Lambda 表達(dá)式讓你能夠?qū)⒑瘮?shù)作為方法參數(shù)火窒,或者將代碼作為數(shù)據(jù)對待拷姿。
優(yōu)點(diǎn):在 Java 8 之前晦毙,匿名內(nèi)部類来惧,監(jiān)聽器和事件處理器的使用都顯得很冗長暇赤,減少代碼量心例,可讀性增強(qiáng), 發(fā)揮多核 CPU 的優(yōu)勢;
使用范圍: 匿名內(nèi)部類鞋囊,監(jiān)聽器和事件處理器, 集合.
<h3>1.使用lambda表達(dá)式</h3>
要使用 Lambda 表達(dá)式止后,需要定義一個函數(shù)式接口, 如:
Function<T, R>:將 T 作為輸入,返回 R 作為輸出溜腐,他還包含了和其他函數(shù)組合的默認(rèn)方法译株。
Predicate<T> :將 T 作為輸入,返回一個布爾值作為輸出挺益,該接口包含多種默認(rèn)方法來將 Predicate 組合成其他復(fù)雜的邏輯(與歉糜、或、非)望众。
Consumer<T> :將 T 作為輸入匪补,不返回任何內(nèi)容,表示在單個參數(shù)上的操作烂翰。
上面的函數(shù)式接口是jdk 8里定義的,也可以自定義,定義一個接口,然后定義一個(只能一個)抽象方法.這個類就被識別成Functional Interface,當(dāng)然最好在接口前加個標(biāo)簽@FunctionalInterface
@FunctionalInterface
public interface Functional<T> {
public void thefunction(T t);
}
<h3>2. lambda表達(dá)式</h3>
(Type t)->{ expression;}
由于可以識別Type 所以,可以簡化成
(t)->{expression;}
如果只有一個變量,可以簡化括號
t->{expression;}
如果只有一行語句,可以簡化括號,去掉括號以后就不用加分號了
(t)->expression
例子:
Map<String,String> map…
map.forEach((String key,String value)
->{ System.out.println(key +" : "+value);}
);
簡化成
map.forEach((key, value)
-> System.out.println(key +" : "+value)
);
還有一種寫法
Type::Method
例子
i->System.out.println(i)
也可以寫成
System.out::println
<h3>參考目錄</h3>
Java 8 新特性概述
Oracle java 8