91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java8中Stream API的技巧有哪些

發布時間:2021-12-01 11:18:24 來源:億速云 閱讀:197 作者:iii 欄目:編程語言

本篇內容介紹了“Java8中Stream API的技巧有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

 Stream簡介

1、Java 8引入了全新的Stream API。這里的Stream和I/O流不同,它更像具有Iterable的集合類,但行為和集合類又有所不同。

2、stream是對集合對象功能的增強,它專注于對集合對象進行各種非常便利、高效的聚合操作,或者大批量數據操作。

3、只要給出需要對其包含的元素執行什么操作,比如 “過濾掉長度大于 10 的字符串”、“獲取每個字符串的首字母”等,Stream  會隱式地在內部進行遍歷,做出相應的數據轉換。

為什么要使用Stream

1、函數式編程帶來的好處尤為明顯。這種代碼更多地表達了業務邏輯的意圖,而不是它的實現機制。易讀的代碼也易于維護、更可靠、更不容易出錯。

2、高端

實例數據源

Java8中Stream API的技巧有哪些

Filter

1、遍歷數據并檢查其中的元素時使用。

2、filter接受一個函數作為參數,該函數用Lambda表達式表示。

Java8中Stream API的技巧有哪些

Java8中Stream API的技巧有哪些

Map

1、map生成的是個一對一映射,for的作用

2、比較常用

3、而且很簡單

Java8中Stream API的技巧有哪些

Java8中Stream API的技巧有哪些

FlatMap

1、顧名思義,跟map差不多,更深層次的操作

2、但還是有區別的

3、map和flat返回值不同

4、Map 每個輸入元素,都按照規則轉換成為另外一個元素。

還有一些場景,是一對多映射關系的,這時需要 flatMap。

5、Map一對一

6、Flatmap一對多

7、map和flatMap的方法聲明是不一樣的

(1)Streammap(Function mapper);

(2)StreamflatMap(Function> mapper);

(3)  map和flatMap的區別:我個人認為,flatMap的可以處理更深層次的數據,入參為多個list,結果可以返回為一個list,而map是一對一的,入參是多個list,結果返回必須是多個list。通俗的說,如果入參都是對象,那么flatMap可以操作對象里面的對象,而map只能操作***層。

Java8中Stream API的技巧有哪些

Java8中Stream API的技巧有哪些

Reduce

1、感覺類似遞歸

2、數字(字符串)累加

3、個人沒咋用過

Java8中Stream API的技巧有哪些

Java8中Stream API的技巧有哪些

Collect

1、collect在流中生成列表,map,等常用的數據結構

2、toList()

3、toSet()

4、toMap()

5、自定義

Java8中Stream API的技巧有哪些

Optional

1、Optional 是為核心類庫新設計的一個數據類型,用來替換 null 值。

2、人們對原有的 null 值有很多抱怨,甚至連發明這一概念的Tony Hoare也是如此,他曾說這是自己的一個“價值連城的錯誤”

3、用處很廣,不光在lambda中,哪都能用

4、Optional.of(T),T為非空,否則初始化報錯

5、Optional.ofNullable(T),T為任意,可以為空

6、isPresent(),相當于 !=null

7、ifPresent(T), T可以是一段lambda表達式 ,或者其他代碼,非空則執行

Java8中Stream API的技巧有哪些

并發

1、stream替換成parallelStream或 parallel

2、輸入流的大小并不是決定并行化是否會帶來速度提升的唯一因素,性能還會受到編寫代碼的方式和核的數量的影響

3、影響性能的五要素是:數據大小、源數據結構、值是否裝箱、可用的CPU核數量,以及處理每個元素所花的時間

Java8中Stream API的技巧有哪些

調試

1、list.map.fiter.map.xx 為鏈式調用,最終調用collect(xx)返回結果

2、分惰性求值和及早求值

3、判斷一個操作是惰性求值還是及早求值很簡單:只需看它的返回值。如果返回值是  Stream,那么是惰性求值;如果返回值是另一個值或為空,那么就是及早求值。使用這些操作的理想方式就是形成一個惰性求值的鏈,***用一個及早求值的操作返回想要的結果。

4、通過peek可以查看每個值,同時能繼續操作流

Java8中Stream API的技巧有哪些

“Java8中Stream API的技巧有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宽城| 河源市| 潍坊市| 黄山市| 远安县| 博爱县| 政和县| 四子王旗| 馆陶县| 昌都县| 通海县| 瑞金市| 金溪县| 油尖旺区| 正安县| 霍林郭勒市| 策勒县| 海盐县| 乐山市| 介休市| 五大连池市| 新平| 沙湾县| 梁山县| 明溪县| 东乡县| 南丰县| 普兰店市| 泉州市| 嘉定区| 西安市| 张家界市| 井冈山市| 义乌市| 大关县| 蚌埠市| 班戈县| 定襄县| 靖边县| 喀喇沁旗| 攀枝花市|