首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将流拆分为N个元素的子流

将流拆分为N个元素的子流
EN

Stack Overflow用户
提问于 2016-12-14 01:43:12
回答 1查看 1.8K关注 0票数 2

在Java中,我们能以某种方式将流拆分为不超过N个元素的子流吗?例如

Stream<Integer> s = Stream.of(1,2,3,4,5);
Stream<Stream<Integer>> separated = split(s, 2);
// after that separated should contain stream(1,2), stream(3,4), stream(5)

被两个流分割的解决方案只对2个流是正确的,对于N个流同样如此,这将是非常丑陋和只写的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-10 07:19:18

你不能简单直接地将一个Stream拆分成2个或更多的Streas。唯一的方法是通过对将元素收集到List,然后再将它们映射回Stream

Stream<Integer> s = Stream.of(1,2,3,4,5);
List<Integer> list = s.collect(Collectors.toList());
int size = list.size();

List<List<Integer>> temp = new ArrayList<>();
List<Integer> temp2 = new ArrayList<>();

int index = 0;
for (int i=0; i<size; i++) {
    temp2.add(list.get(i));
    if (i%2!=0) {
        temp.add(temp2);
        temp2 = new ArrayList<>();
    }
    if (i == size - 1 && size%2!=0) {
        temp.add(temp2);
    }
}
Stream<Stream<Integer>> stream = temp.stream().map(i -> i.stream());

正如你所看到的,这真的是一条很长的路,也不值得。将对存储在List中而不是Stream中不是更好吗?java-stream应用编程接口不是用来存储数据的,而是用来处理数据的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41127391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档