成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么使用JavaStream

本篇內(nèi)容主要講解“怎么使用Java Stream”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么使用Java Stream”吧!

創(chuàng)新互聯(lián)建站長(zhǎng)期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為和順企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,和順網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

Stream的特點(diǎn)

如果你要用好Stream,你必須搞清楚它的特點(diǎn)。

Stream 并非數(shù)據(jù)結(jié)構(gòu)

雖然我們把Stream和以Collection為代表的集合框架類型放在一起對(duì)比,但它只是將數(shù)據(jù)源(Source)中的數(shù)據(jù)元素提取到數(shù)據(jù)操作管道,并按照定義好的規(guī)則(操作符)進(jìn)行“流動(dòng)”。另外Stream也絕不修改自己所封裝的底層數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)。

Stream有點(diǎn)類似于水管網(wǎng)絡(luò)。

無固定大小

水管網(wǎng)絡(luò)中流動(dòng)的水是沒有固定大小的,甚至可以是無限的。Stream也是如此。

惰性化

Stream只有定義終止操作,比如collect(Collector)、forEach(Consumer),它才會(huì)開始執(zhí)行。以下從流中篩選以h開頭的字符串并不會(huì)執(zhí)行。

Stream.of("hello","wolrd").filter(str-> str.startsWith("h"))

不變性

一個(gè)既定的Stream是不變的,所有的中間操作都會(huì)衍生一個(gè)新的Stream,即使中間操作不改變Stream中的任何元素。

一次性

一個(gè)Stream流只有一次終止操作。一旦完成了終止操作,這個(gè)流就關(guān)閉了。無法再次進(jìn)行使用,簡(jiǎn)直就是一次性用品。

Stream<String> stringStream = Stream.of("1", "2"); // forEach 終止操作打印 1  2 流終止 stringStream.forEach(System.out::println); // 重復(fù)使用將拋出IllegalStateException異常 stream has already been operated upon or closed stringStream.filter(s -> s.equals("2")).forEach(System.out::println);

并行操作

Stream支持并行化(parallel)操作,不需要編寫額外的多線程代碼,所有的操作會(huì)自動(dòng)并行進(jìn)行。不過大多數(shù)情況下我們都是串行執(zhí)行。

我們?cè)撊绾芜x擇

對(duì)于Stream和Collection我們?cè)撊绾芜x擇呢?首先Collection的絕大部分場(chǎng)景Stream都可以完成,甚至更好。

看API操作

它們都提供了很多方法,如果你需要獲取元素的個(gè)數(shù),集合更加方便一些,如果你要過濾一些元素,很明顯,Stream的API更加方便,甚至它提供了各種可組合的操作。

看初始化成本

對(duì)于集合,一旦定義使用需要一次性的加載入內(nèi)存,如果你打算在內(nèi)存中重用這些數(shù)據(jù),使用集合就非常合適;而Stream的惰性特點(diǎn),在終端操作之前不會(huì)有任何的中間操作,這意味著不會(huì)上來就初始化數(shù)據(jù)到內(nèi)存,可以降低初始化成本,甚至你可以調(diào)整其執(zhí)行消費(fèi)元素的速率。

看結(jié)果集大小

如果最終的結(jié)果是可控的、有限的,它們兩者都能夠勝任;如果結(jié)果集非常龐大或者近似無限的,Stream將是不二之選。

是否改變?cè)紨?shù)據(jù)

Stream不會(huì)改變?cè)嫉臄?shù)據(jù),而Collection可以實(shí)現(xiàn)這一點(diǎn)。

是要數(shù)據(jù)容器還是數(shù)據(jù)管道。

是否需要重用對(duì)象實(shí)例

當(dāng)結(jié)果以Collection的形式返回時(shí),我們可以重復(fù)使用。而一個(gè)Stream被使用后,就認(rèn)為它已消耗掉,并在重用時(shí)拋出IllegalStateException,如上面所示。

是否需要固定的格式

Stream流的表現(xiàn)格式通常沒有Java集合框架豐富,Java集合框架提供了如Set、List、Map等格式。如果你需要終端返回展現(xiàn),顯然集合框架更加合適。

在Spring MVC中,Stream的展現(xiàn)為數(shù)組。

到此,相信大家對(duì)“怎么使用Java Stream”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

本文標(biāo)題:怎么使用JavaStream
轉(zhuǎn)載源于:http://jinyejixie.com/article8/gpehip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站定制開發(fā)、移動(dòng)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化Google、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
安阳县| 五常市| 临湘市| 奎屯市| 甘南县| 金昌市| 前郭尔| 林州市| 比如县| 天峻县| 天峻县| 葵青区| 石楼县| 门源| 峨边| 米泉市| 元谋县| 汝南县| 樟树市| 定远县| 和田县| 波密县| 乳山市| 永安市| 永靖县| 荆门市| 沈阳市| 汉源县| 无棣县| 阿合奇县| 德昌县| 烟台市| 张家口市| 张家口市| 焦作市| 昌都县| 泾川县| 武邑县| 铜山县| 西峡县| 珠海市|