Java 将流拆分为具有N个元素的子流

Java 将流拆分为具有N个元素的子流,java,java-8,java-stream,Java,Java 8,Java Stream,在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) streams=Stream.of(1,2,3,4,5)

在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)
streams=Stream.of(1,2,3,4,5);
分流=分流(s,2);
//在此之后,分离出的应包含流(1,2)、流(3,4)、流(5)

按两个流拆分解决方案仅适用于2个流,同样适用于N个流将非常难看且仅写。

您无法轻松直接地将
流拆分为2个或更多
流。唯一的方法是程序性方法,包括由夫妇将元素收集到
列表
,并再次将它们映射回

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());
streams=Stream.of(1,2,3,4,5);
List List=s.collect(Collectors.toList());
int size=list.size();
List temp=new ArrayList();
List temp2=new ArrayList();
int指数=0;
对于(int i=0;i i.stream());

正如你所看到的,这真的是一条漫长的路,一条不值得的路。将对存储在
列表
中不是比
更好吗?API不用于数据存储,而是用于数据处理。

可能重复的API不,您不能,不太可能。收集到实际的文字集合中,而不是流,这是可行的。这是一个循环。与其问如何分割流,不如想想您实际想要对流做什么。询问,如何从流中获得所需的结果,而不是如何分割流。