最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java8 Stream流使用

2023-03-13 21:35 作者:我有一個壞前桌  | 我要投稿

破解IDEA請查看:IDEA激活碼2022.1最新激活注冊碼–破解教程「永久激活,親測有效」


正文

JDK的發(fā)行版本都已經(jīng)衍生至19了,這個從8就引入的Stream流應(yīng)當是屬于Java程序員基操了。然而最近面試遇到開發(fā)經(jīng)驗3年的工程師,對它似乎不是很熟悉,讓我大吃一驚。本文通過常用的一些簡單的例子把它以最小的時間成本給大家說明白。


一、楔子


在使用集合的時候迭代往往是使用的最多的,對比是否使用stream的代碼實現(xiàn)


第一次看到這樣的寫法時,可能會認為這樣的代碼可讀性不高,但當你熟悉之后,你會改變對它的看法。



二、如何創(chuàng)建流

想要使用Stream,首先需要創(chuàng)建一個流,最常見的是直接調(diào)用集合的java.util.Collection#stream方法


當然通過數(shù)組同樣能夠創(chuàng)建


三、流操作的分類

Stream流操作共分為兩個大類:惰性求值、及早求值


Stream操作時,先調(diào)用了filter方法傳入了一個Lambda表達式代表過濾規(guī)則,后調(diào)用了collect方法表示將流轉(zhuǎn)換為List集合。

我們不需要去記哪些方法是惰性求值,如果方法的返回值是Stream那么它代表的就是惰性求值。如果返回另外一個值或空,那么它代表的就是及早求值。

這些流操作定義之后,在程序中是怎么調(diào)用的定義的lambda表達式的?

例如在java.util.stream.ReferencePipeline抽象類中有對Stream接口collect的實現(xiàn),方法由final修飾,不再支持重寫。


四、常用基操

map

映射,x->y,轉(zhuǎn)換數(shù)據(jù)類型

filter

過濾,“排除不符合某個條件的元素”,也就是返回true的時候保留,返回false排除

sorted

排序,

如果要降序(大-->?。?,僅需再調(diào)用reversed方法Comparator.comparing(Student::getScore).reversed())這就是聲明式編程,你只管叫它做什么,而不像命令式編程叫它如何做。

reduce

對于reduce操作,不建議在現(xiàn)實中使用。

如果你有累加、求最大值、最小值的需求,Stream封裝了更簡單的方法。

min || max

顧名思義,求取集合中的最小值和最大值。

Java8對Comparator接口提供了新的靜態(tài)方法comparing,這個方法返回Comparator對象,以前我們需要手動實現(xiàn)compare比較,現(xiàn)在我們只需要調(diào)用Comparator.comparing靜態(tài)方法即可。

summaryStatistics

求和操作也是常用的操作,利用reduce會讓代碼晦澀難懂,特別是復(fù)雜的對象類型。

Collectors

前面的大部分操作都是以collect(Collectors.toList())結(jié)尾,看多了自然也大概猜得到它是將流轉(zhuǎn)換為集合對象。最大的功勞當屬Java8新提供的類——Collectors收集器。

示例給出比較常見的List和Map的轉(zhuǎn)換,



Java8 Stream流使用的評論 (共 條)

分享到微博請遵守國家法律
喀什市| 大竹县| 长武县| 成安县| 集安市| 武胜县| 溧阳市| 成安县| 博兴县| 临江市| 临汾市| 大庆市| 寿宁县| 阳谷县| 浦县| 香格里拉县| 湄潭县| 华亭县| 伊通| 新沂市| 舟山市| 集贤县| 乾安县| 依安县| 嵊州市| 长宁区| 兴和县| 化隆| 潼关县| 奉节县| 邵阳县| 建始县| 桐城市| 禄劝| 巧家县| 沈丘县| 浦东新区| 康平县| 永登县| 通山县| 额尔古纳市|