- java.lang.Object
-
- java.util.Spliterators.AbstractDoubleSpliterator
-
- All Implemented Interfaces:
-
Spliterator<Double>
,Spliterator.OfDouble
,Spliterator.OfPrimitive<Double,DoubleConsumer,Spliterator.OfDouble>
- Enclosing class:
- Spliterators
public abstract static class Spliterators.AbstractDoubleSpliterator extends Object implements Spliterator.OfDouble
摘要Spliterator.OfDouble
实现了trySplit
以允许有限的并行性。要实现一个扩展类,只需要实现
tryAdvance
。 扩展类应该覆盖forEachRemaining
,如果它可以提供更高性能的实现。- API Note:
-
当不可能或难以以允许平衡并行计算的方式有效地分割元素时,此类是创建分割器的有用帮助。
使用这个类的一个替代方法也允许有限的并行性是从迭代器创建一个分割器(参见
Spliterators.spliterator(java.util.PrimitiveIterator.OfDouble, long, int)
)根据使用迭代器的情况可能比扩展这个类更容易或更方便,例如,如果已经有可以使用的迭代器,那么就不需要扩展这个类。 - 从以下版本开始:
- 1.8
- 另请参见:
-
Spliterators.spliterator(java.util.PrimitiveIterator.OfDouble, long, int)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface java.util.Spliterator
Spliterator.OfDouble, Spliterator.OfInt, Spliterator.OfLong, Spliterator.OfPrimitive<T,T_CONS,T_SPLITR extends Spliterator.OfPrimitive<T,T_CONS,T_SPLITR>>
-
-
Field Summary
-
Fields inherited from interface java.util.Spliterator
CONCURRENT, DISTINCT, IMMUTABLE, NONNULL, ORDERED, SIZED, SORTED, SUBSIZED
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
AbstractDoubleSpliterator(long est, int additionalCharacteristics)
创建一个报告给定估计大小和特征的分配器。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 int
characteristics()
返回此Spliterator及其元素的一组特征。long
estimateSize()
返回Spliterator.forEachRemaining(java.util.function.Consumer<? super T>)
遍历将遇到的元素数量的估计值,如果为无穷大,未知或计算太贵,则返回Long.MAX_VALUE
。Spliterator.OfDouble
trySplit()
如果此分割器可以被分区,返回一个包含元素的Spliter,当从该方法返回时,它不会被该Spliter所覆盖。-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.util.Spliterator
getComparator, getExactSizeIfKnown, hasCharacteristics
-
Methods inherited from interface java.util.Spliterator.OfDouble
forEachRemaining, forEachRemaining, tryAdvance, tryAdvance
-
-
-
-
方法详细信息
-
trySplit
public Spliterator.OfDouble trySplit()
如果此分割器可以被分区,返回一个包含元素的Spliter,当从该方法返回时,它不会被该Spliter所覆盖。如果此Spliterator为
Spliterator.ORDERED
,则返回的Spliterator必须覆盖元素的严格前缀。除非这个Spliterator包含无数个元素,否则重复调用
trySplit()
必须最终返回null
。 非空返回:- 在拆分之前报告的值为
estimateSize()
,分割后必须大于或等于estimateSize()
为此和返回的Spliterator; 和 - 如果这Spliterator是
SUBSIZED
,然后estimateSize()
这个spliterator分裂之前必须等于总和estimateSize()
,这和拆分后返回Spliterator。
该方法可能由于任何原因返回
null
,包括空虚,遍历开始后无法拆分,数据结构约束和效率考虑。 这种实现允许有限的并行性。- Specified by:
-
trySplit
在接口Spliterator<Double>
- Specified by:
-
trySplit
在接口Spliterator.OfDouble
- Specified by:
-
trySplit
在接口Spliterator.OfPrimitive<Double,DoubleConsumer,Spliterator.OfDouble>
- 结果
-
一个
Spliterator
覆盖了元素的一部分,或者null
如果这个拼接器不能被拆分
- 在拆分之前报告的值为
-
estimateSize
public long estimateSize()
返回Spliterator.forEachRemaining(java.util.function.Consumer<? super T>)
遍历将遇到的元素数量的估计值,如果无穷大,未知或计算太贵,则返回Long.MAX_VALUE
。如果此Spliterator是
Spliterator.SIZED
并且尚未被部分遍历或拆分,或者该Spliterator是Spliterator.SUBSIZED
并且尚未被部分遍历,则此估计必须是完整遍历将遇到的元素的精确计数。 否则,此估计可能是任意不准确的,但必须按照Spliterator.trySplit()
的调用规定减少 。- Specified by:
-
estimateSize
在接口Spliterator<Double>
- 实现要求:
- 此实现返回创建时报告的估计大小,如果估计大小已知,则在分割时会减小大小。
- 结果
-
估计大小,或
Long.MAX_VALUE
如果无限,未知,或太贵无法计算。
-
characteristics
public int characteristics()
返回此Spliterator及其元素的一组特征。 结果从表示为或运算值Spliterator.ORDERED
,Spliterator.DISTINCT
,Spliterator.SORTED
,Spliterator.SIZED
,Spliterator.NONNULL
,Spliterator.IMMUTABLE
,Spliterator.CONCURRENT
,Spliterator.SUBSIZED
。 在给定的分配器之前或之前或之间呼叫trySplit
重复呼叫characteristics()
应始终返回相同的结果。如果Spliterator报告不一致的特征集(从单个调用返回的或多个调用返回的),则不能保证使用此Spliter的任何计算。
- Specified by:
-
characteristics
在接口Spliterator<Double>
- 实现要求:
- 此实现返回创建时报告的特征。
- 结果
- 特征的表征
-
-