我们能否以某种方式将 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个或更多Streas
简单直接。程序性方法的唯一方法是将元素收集到List
由夫妇并将它们映射回Stream
again:
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
? The java流 /questions/tagged/java-streamAPI 不用于数据存储,而是用于数据处理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)