Steppers exist to enable creating Java streams over Scala collections, see scala.jdk.StreamConverters. Besides that use case, they allow iterating over collections holding unboxed primitives (e.g.,
Array[Int]) without boxing the elements.
Steppers have an iterator-like interface with methods
nextStep(). The difference to iterators - and the reason
Stepper is not a subtype of
Iterator - is that there are hand-specialized variants of
Double (IntStepper, etc.). These enable iterating over collections holding unboxed primitives (e.g., Arrays, scala.jdk.Accumulators) without boxing the elements.
The selection of primitive types (
Double) matches the hand-specialized variants of Java Streams (java.util.stream.Stream, java.util.stream.IntStream, etc.) and the corresponding Java Spliterators (java.util.Spliterator, java.util.Spliterator.OfInt, etc.).
Steppers can be converted to Scala Iterators, Java Iterators and Java Spliterators. Primitive Steppers are converted to the corresponding primitive Java Iterators and Spliterators.
the element type of the Stepper
Returns a Java java.util.Iterator corresponding to this Stepper.
Returns a java.util.Spliterator corresponding to this Stepper.
Split this stepper, if applicable.
Split this stepper, if applicable. The elements of the current Stepper are split up between the resulting Stepper and the current stepper.
null, in which case the current Stepper yields the same elements as before.
trySplit in java.util.Spliterator.