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

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

java中stream的peek()用法詳解

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

前言

最近看到一段代碼:

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

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

改變元素的內(nèi)部狀態(tài)

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

最終操作(terminal operation)

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

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

但在使用 peek() 時仍然需要注意,因為它只保證作用于流經(jīng)管道的元素,但并不保證全部元素都會流經(jīng)管道。

peek() vs forEach()

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

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

使用了forEach()之后,在結(jié)尾使用.collect方法會報錯。因為forEach() 已經(jīng)是一個最終操作無法再添加最終操作。

在這里插入圖片描述

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

在這里插入圖片描述

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

正因為 peek() 不是一個最終操作,不會影響“哪些元素會流過”,所以十分適合在調(diào)試的時候,用來打印出流經(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. 如果想對流經(jīng)的每個元素應用一個函數(shù),從而改變某些狀態(tài),那么請用 forEach();
  2. 如果想打印流經(jīng)的每個元素的狀態(tài)(日志或 debug),這時應該用 peek();

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

相關(guān)文章

最新評論

麻阳| 衡阳市| 房产| 盐源县| 博乐市| 滕州市| 界首市| 华宁县| 安陆市| 祥云县| 平塘县| 桓台县| 临沂市| 彰化市| 阿城市| 雷州市| 北辰区| 通许县| 阜平县| 哈尔滨市| 密云县| 沈丘县| 西吉县| 霍山县| 治县。| 佛冈县| 织金县| 北海市| 同心县| 静宁县| 温宿县| 清丰县| 泰宁县| 舞钢市| 翁牛特旗| 石台县| 宁国市| 齐齐哈尔市| 彰化市| 保山市| 东平县|