我们能否以某种方式将流分割成只有Java中不超过N个元素的子流? 例如
.replace()
分割两个流解决方案仅对2个流是正确的,对于N个流来说相同是非常丑陋和只写。
答案 0 :(得分:2)
您无法轻松直接地将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 API不用于数据存储,而是用于处理。