最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Java中Stream流怎么實(shí)現(xiàn)合并操作

小編這次要給大家分享的是Java中Stream流怎么實(shí)現(xiàn)合并操作,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

創(chuàng)新互聯(lián)公司是專業(yè)的固始網(wǎng)站建設(shè)公司,固始接單;提供網(wǎng)站設(shè)計(jì)、做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行固始網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

1. 前言

Java Stream Api 提供了很多有用的 Api 讓我們很方便將集合或者多個(gè)同類型的元素轉(zhuǎn)換為流進(jìn)行操作。今天我們來看看如何合并 Stream 流。

2. Stream 流的合并

Stream 流合并的前提是元素的類型能夠一致。

2.1 concat

最簡(jiǎn)單合并流的方法是通過 Stream.concat() 靜態(tài)方法:

Stream stream = Stream.of(1, 2, 3);
Stream another = Stream.of(4, 5, 6);
Stream concat = Stream.concat(stream, another);

List collect = concat.collect(Collectors.toList());
List expected = Lists.list(1, 2, 3, 4, 5, 6);

Assertions.assertIterableEquals(expected, collect);

這種合并是將兩個(gè)流一前一后進(jìn)行拼接:

Java中Stream流怎么實(shí)現(xiàn)合并操作

2.2 多個(gè)流的合并

多個(gè)流的合并我們也可以使用上面的方式進(jìn)行“套娃操作”:

Stream.concat(Stream.concat(stream, another), more);

你可以一層一層繼續(xù)套下去,如果需要合并的流多了,看上去不是很清晰。

我之前介紹過一個(gè)Stream 的 flatmap 操作 ,它的大致流程可以參考里面的這一張圖:

Java中Stream流怎么實(shí)現(xiàn)合并操作

因此我們可以通過 flatmap 進(jìn)行實(shí)現(xiàn)合并多個(gè)流:

Stream stream = Stream.of(1, 2, 3);
Stream another = Stream.of(4, 5, 6);
Stream third = Stream.of(7, 8, 9);
Stream more = Stream.of(0);
Stream concat = Stream.of(stream,another,third,more).
  flatMap(integerStream -> integerStream);
List collect = concat.collect(Collectors.toList());
List expected = Lists.list(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
Assertions.assertIterableEquals(expected, collect);

這種方式是先將多個(gè)流作為元素生成一個(gè)類型為 Stream> 的流,然后進(jìn)行 flatmap 平鋪操作合并。

2.3 第三方庫

有很多第三方的強(qiáng)化庫 StreamEx 、Jooλ 都可以進(jìn)行合并操作。另外反應(yīng)式編程庫 Reactor 3 也可以將 Stream 流合并為反應(yīng)流,在某些場(chǎng)景下可能會(huì)有用。這里演示一下:

List block = Flux.fromStream(stream)
            .mergeWith(Flux.fromStream(another))
                 .collectList()
                 .block();

看完這篇關(guān)于Java中Stream流怎么實(shí)現(xiàn)合并操作的文章,如果覺得文章內(nèi)容寫得不錯(cuò)的話,可以把它分享出去給更多人看到。


分享名稱:Java中Stream流怎么實(shí)現(xiàn)合并操作
當(dāng)前路徑:http://fisionsoft.com.cn/article/pdhgdg.html