我已经编写了一个Spliterator,如果数组的大小大于1000,它将被拆分到另一个数组。这是我的密码。但是当我运行它时,加法的结果远远大于50,005,000。import java.util.Arrays;import java.util.Spliterator;import java.util.stream.StreamSupport;
public class SumSpl
建议实现Spliterator的答案。Spliterator将实现如何提供和提供作为下一个元素(tryAdvance)的逻辑。JavaDoc of Spliterator说:
用于遍历和划分源元素的对象。例如,Spliterator所涵盖的元素的来源可以是数组、Collection、IO通道或生成器函数。..。Spliterator API除了支持顺序遍历之外,还支持分解和单元素迭代,从而支持高效的并行遍历。..。另一方面,我可以实现这样的逻辑:如何在Stream.Builder周围推进到下一个元素,并
我惊讶地看到,方法使用Iterator<T>接口的实现而不是Spliterator<T>来创建Stream<T>的实例。由于许多原因,即使没有并行性,使用Spliterator<T>也有几个优点。例如, to question
Spliterator的每个元素访问成本从根本上低于Iterator,甚至按顺序计算。那么,为什么BufferedReader::lines()通过Iterator<T>而不是Spliterator<T>创建了一个Strea
我尝试过使用Spliterator,但是我不知道如何获得分区队列。ConcurrentLinkedQueue<int[]> q = // contains a large number of elementsSpliterator<int[]> p2 = p1.trySplit();p2.getQueue();
我想但不能做p1.getQueue()等