改變?cè)氐膬?nèi)部狀態(tài),對(duì)每個(gè)object執(zhí)行 saveInfomation(object, params),然后把結(jié)果收集到一個(gè) List 里,這里涉及到了最終操作,需要的朋友可以參考下" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中stream的peek()用法詳解

 更新時(shí)間:2024年01月19日 09:54:55   作者:CUIYD_1989  
這篇文章主要介紹了java中stream的peek()用法詳解,peek的作用是
改變?cè)氐膬?nèi)部狀態(tài),對(duì)每個(gè)object執(zhí)行 saveInfomation(object, params),然后把結(jié)果收集到一個(gè) List 里,這里涉及到了最終操作,需要的朋友可以參考下

前言

最近看到一段代碼:

aeFormList.stream().peek(object -> saveInfomation(object, params)).collect(Collectors.toList());

之前沒有用過peek,于是查了一下,peek的作用是:

改變?cè)氐膬?nèi)部狀態(tài)

從這句話中可以看出,上面代碼的意思是:對(duì)每個(gè)object執(zhí)行 saveInfomation(object, params),然后把結(jié)果收集到一個(gè) List 里。 這里涉及到了最終操作。

最終操作(terminal operation)

peek() 并不是一個(gè)最終操作(terminal operation)。stream 被設(shè)計(jì)為“元素只有在最終操作需要時(shí)才會(huì)被處理”。如果沒有最終操作的“拉動(dòng)”,那么 stream 中就沒有操作會(huì)真正執(zhí)行。

在上面的例子中,.collect(Collectors.toList())就是一個(gè)最終操作,而且這個(gè)操作會(huì)“拉動(dòng)”所有元素。這樣一來,每個(gè)元素都一定會(huì)被應(yīng)用 peek() 方法。

但在使用 peek() 時(shí)仍然需要注意,因?yàn)樗槐WC作用于流經(jīng)管道的元素,但并不保證全部元素都會(huì)流經(jīng)管道。

peek() vs forEach()

forEach() 則是一個(gè)最終操作。除此之外,peek() 和 forEach() 再無其他不同。

那么到底什么是最終操作,我們看如下代碼:

使用了forEach()之后,在結(jié)尾使用.collect方法會(huì)報(bào)錯(cuò)。因?yàn)閒orEach() 已經(jīng)是一個(gè)最終操作無法再添加最終操作。

在這里插入圖片描述

在使用peek()之后,可以使用.collect方法。

在這里插入圖片描述

peek() 的典型用法:協(xié)助調(diào)試

正因?yàn)?peek() 不是一個(gè)最終操作,不會(huì)影響“哪些元素會(huì)流過”,所以十分適合在調(diào)試的時(shí)候,用來打印出流經(jīng)管道的元素。例如:

Stream.of("one", "two", "three", "four")
         .filter(e -> e.length() > 3)
         .peek(e -> System.out.println("Filtered value: " + e))
         .map(String::toUpperCase)
         .peek(e -> System.out.println("Mapped value: " + e))
         .collect(Collectors.toList());

總結(jié)

  1. 如果想對(duì)流經(jīng)的每個(gè)元素應(yīng)用一個(gè)函數(shù),從而改變某些狀態(tài),那么請(qǐng)用 forEach();
  2. 如果想打印流經(jīng)的每個(gè)元素的狀態(tài)(日志或 debug),這時(shí)應(yīng)該用 peek();

到此這篇關(guān)于java中stream的peek()用法詳解的文章就介紹到這了,更多相關(guān)stream的peek()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

修水县| 水富县| 兴城市| 木里| 怀柔区| 新绛县| 交口县| 怀柔区| 安仁县| 新竹市| 墨竹工卡县| 南安市| 景宁| 香河县| 深水埗区| 道孚县| 木里| 台东市| 邵东县| 龙井市| 乐都县| 柘城县| 渭南市| 泸西县| 梅河口市| 嘉善县| 玉林市| 武清区| 当涂县| 新巴尔虎左旗| 高密市| 申扎县| 新余市| 资溪县| 应城市| 莲花县| 荥阳市| 哈尔滨市| 长治县| 措美县| 灯塔市|