lambda表達(dá)式最全解析 jdk1.8新特性方法引用?
jdk1.8新特性方法引用?1.方法引用:如果Lambda體中的內(nèi)容已經(jīng)實(shí)現(xiàn),我們可以使用方法引用(可以理解為Lambda表達(dá)式的另一種形式)主要有三種語法格式::對象::實(shí)例方法名類::靜態(tài)方法名類
jdk1.8新特性方法引用?
1.
方法引用:如果Lambda體中的內(nèi)容已經(jīng)實(shí)現(xiàn),我們可以使用方法引用(可以理解為Lambda表達(dá)式的另一種形式)主要有三種語法格式::對象::實(shí)例方法名類::靜態(tài)方法名類::實(shí)例方法名注意,:體中調(diào)用方法的參數(shù)列表和返回值類型要與函數(shù)接口中抽象方法的函數(shù)列表和返回值類型一致。
2.
如果Lambda參數(shù)列表中的第一個(gè)參數(shù)是實(shí)例方法的調(diào)用方,第二個(gè)參數(shù)是實(shí)例方法的參數(shù),那么可以使用類名::方法@測試//對象::實(shí)例方法名。
java8 stream和foreach哪個(gè)效率高?
1.問題的描述
java8 stream和foreach哪個(gè)效率更高?
問題結(jié)論
超過150W數(shù)據(jù):streamgtparalleStreamgtsimple
150W條數(shù)據(jù)如下:simplegtstreamgtparalleStream
從性能上看:普通的forEach可以用于少量的數(shù)據(jù),不需要在java8中使用幾個(gè)新的,也不需要改變項(xiàng)目中已經(jīng)使用的東西,10W的差距只有幾毫秒。
2.測試案例
進(jìn)口
進(jìn)口
ForEachMain的公共類{
公共靜態(tài)void main(String[] args) {
//實(shí)例化arrayList
listlintegergt arrayList new ArrayListltIntegergt()
整數(shù)15000000
//插入10萬條數(shù)據(jù)
for (int i 0 i lt num i ) {
㈠
}
listlintegergt RES new ArrayListltgt()
()
//用foreach循環(huán)arrayList
long arrayForeachStartTim:數(shù)組里的整數(shù)st) {
(英寸)
}
long arrayForeachEndTime()
(
用foreach循環(huán)arrayList (num)次:(ArrayForeacheEndTime-ArrayForeacheStartTime)毫秒)
()
//使用stream-foreach循環(huán)arrayList
長數(shù)組流開始時(shí)間()
().forEach
長數(shù)組流結(jié)束時(shí)間()
(
使用Stream-foreach循環(huán)arrayList (num)次:(ArrayStreamEndTime-arraystreamstartime)毫秒)
()
//使用parallelStream-foreach循環(huán)arrayList
長數(shù)組并行流開始時(shí)間()
().forEach
長數(shù)組并行流結(jié)束時(shí)間()
(用parallelStream-foreach循環(huán)arrayList (num)需要一萬次:
(數(shù)組并行流時(shí)間-數(shù)組并行流時(shí)間)毫秒)
}
}
2.1當(dāng)編號為50000000時(shí)
使用foreach循環(huán)arrayList 50億次需要2840毫秒。
用stream-foreach循環(huán)arrayList 5000萬次:507毫秒。
用parallelStream循環(huán)arrayList 5000萬次-foreach時(shí)間:1168毫秒。
2.2當(dāng)num為500000時(shí)
使用foreach循環(huán)ArrayList 500,000次需要13毫秒。
用stream-foreach循環(huán)數(shù)組列表500,000次。時(shí)間:25毫秒。
用parallelStream循環(huán)ArrayList 500,000次-foreach時(shí)間:35毫秒。
2.3當(dāng)編號為5000時(shí)
使用foreach循環(huán)arrayList 5000次需要時(shí)間:1毫秒。
用stream-foreach循環(huán)ArrayList,000次:16毫秒。
使用parallelStream-foreach循環(huán)數(shù)組列表00,000次:8毫秒
最直觀的感受就是stream的流式處理應(yīng)該更快。這個(gè)假設(shè)需要事實(shí)來證明。運(yùn)行測試代碼后,發(fā)現(xiàn)并非如此。聽覺是空的,眼見為實(shí),品嘗李子最簡單的方法就是品嘗它們。記住,寫代碼的時(shí)候,一定要以簡單為原則。畢竟運(yùn)行程序的硬件成本會隨著時(shí)間不斷降低。
作者:Sunny sunset,歡迎關(guān)注我的頭條:偶遇美文,主流Java,告訴你不一樣的碼農(nóng)生活。