亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

合并兩個流以創建一個新流

合并兩個流以創建一個新流

精慕HU 2023-04-26 16:32:36
我想同時執行兩個流并生成第三個流作為前兩個流的組合。假設我有以下兩個流Stream<String> a = Stream.of("f","b","z");Stream<String> b = Stream.of("foo","bar","baz");我想從這兩個生成一個新的,相當于這個Stream<String> c = Stream.of("f:foo","b:bar","z:baz");到目前為止我發現的是Stream.concat或Stream.of Stream<String> result = Stream.concat(a, b); or Stream<String> result = Stream.of(a, b).flatMap(s -> s);兩者相互依存并對應于此處Stream.of("f","b","z","foo","bar","baz");到目前為止,我的解決方法是將兩個流的元素分別收集到一個列表中,然后遍歷兩個列表以連接單個元素并將結果列表轉換為一個流。strem api 中是否有更短的方法或現有函數可以同時在兩個流上工作?List<String> aList = a.collect(Collectors.toList());List<String> bList = b.collect(Collectors.toList());List<String> result = new ArrayList<>();for(int i = 0; i< aList.size(); i++){    result.add(aList.get(i)+":"+bList.get(i));}Stream<String> cc = result.stream();
查看完整描述

2 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

這個操作通常被稱為zip,它在 API 中不作為函數存在Stream。自己實現它有點困難。

你可以像這樣使用它:

Streams.zip(a,?b,?(aElem,?bElem)?->?aElem?+?":"?+?bElem));


查看完整回答
反對 回復 2023-04-26
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

您可以使用以下IntStream.range()方法:

IntStream.range(0, aList.size()).mapToObj(index -> aList.get(index) + ":" + bList.get(index)).collect(Collectors.toList());



查看完整回答
反對 回復 2023-04-26
  • 2 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號