日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java延迟函数_Java 8:延迟计算

發布時間:2025/4/5 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java延迟函数_Java 8:延迟计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java8:Stream概念的細化,討論延遲計算/惰性求值Lazy Evaluations。

Java中常見的邏輯操作be1&&f(),是短路/short-circuiting計算,避免了執行不必要的表達式或方法調用。它使用的就是惰性求值或者說正常順序/normal order(SICP中譯為正則序);與此同時,方法實參的求值是饑餓或者說應用序/applicative order,在方法被調用前,所有的實參通通被求值,即使方法中不使用某些實參也被求值。

JDK中,Stream的中間函數如?filter(Predicate super T>)是惰性求值的,filter并非對流中所有元素調用傳遞給它的Predicate,Java8:Stream概念中我們見過,調換map()和filter()函數的調用順序,可以減少函數執行的次數。我們可以借鑒它,設計方法實參的惰性求值,手段是將形參轉化為函數接口,因為實參的lambda表達式在被調用時才求值。

例如有一個方法執行很長時間的運算(sleep模擬)后返回i>0。

public static boolean isPositive(int i) {

pln("test ..." + i);

sleep(1000);//

return i > 0;

}

因為方法實參的求值是饑餓的,對于下面的代碼

public static void eagerTest(boolean be1, boolean be2) {//方法實參的求值是饑餓的

pln(be1 && be2); //實參

isPositive(-1) && isPositive(2); //&&是短路的

}執行eagerTest(isPositive(-1), isPositive(2));的輸出為:

test ...-1

test ...2

false

test ...-1

false

實參的lambda表達式在被調用時才求值

public static void lazyTest(Supplier supplier1, Supplier supplier2) {

pln((supplier1.get() && supplier2.get()));

}

static class imp implements Supplier{

@Override public ?Boolean get(){

return isPositive(-2);

}

}

public static void test() {

//eagerTest(isPositive(-1), isPositive(2));

pln("lazyTest-------------1");

lazyTest(() -> isPositive(-1), () -> isPositive(2));

pln("lazyTest-------------2");

lazyTest( new imp(), () -> isPositive(2) ?);

pln("lazyTest-------------3");

lazyTest( new Supplier(){

@Override public ?Boolean get(){

return isPositive(-3);

}

}, () -> isPositive(3) ?);

}執行test()的輸出為:

lazyTest-------------1

test ...-1

false

lazyTest-------------2

test ...-2

false

lazyTest-------------3

test ...-3

false

在進入lazyTest方法體之前,作為實參的兩個lambda表達式并沒有求值,而在調用supplier1.get()時才會求值。

總結

以上是生活随笔為你收集整理的java延迟函数_Java 8:延迟计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。