gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:42:55 26 4
gpt4 key购买 nike

我们能否以某种方式将 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 个流来说也是如此,将非常丑陋且只写。

最佳答案

您无法轻松直接地将 Stream 拆分为 2 个或多个 Strea。程序方法的唯一方法是通过对将元素收集到 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) {
temp.add(temp2);
}
}
Stream<Stream<Integer>> stream = temp.stream().map(i -> i.stream());

如您所见,这是一条非常漫长的路,而且不值得。将这些对存储在 List 中而不是 Stream 中不是更好吗? API不用于数据存储,而是用于数据处理。

关于java - 将流拆分为具有 N 个元素的子流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41127391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com