Skip to content

Latest commit

 

History

History
34 lines (26 loc) · 1.74 KB

09_primitive_iterators.adoc

File metadata and controls

34 lines (26 loc) · 1.74 KB

Extensions to PrimitiveIterators

The primitive iterators defined in the JDK as sub-interfaces of java.util.PrimitiveIterator do not provide combinators like the ones provided by Xtend. These combinators, however, do take some efforts to implement. Instread, this library provides the class de.fhg.fokus.xtensions.iteration.PrimitiveIteratorExtensions provides methods to create primitive streams (from java.util.stream) for the remaining elements of a given iterator via the extension methods streamRemaining or parallelStreamRemaining. Note that the method streamRemaining does not guarantee that the elements provided by the returned stream are actually taken from the originating iterator. If the underlying iterator implementation is known, the framework may construct a stream that may have better characteristics in some way. If elements should actually be removed from the originating iterator, the streamRemainingExhaustive method can be used.

To create a summary object providing the minimum value, maximum value, average value, sum value, and count of elements, the PrimitiveIteratorExtensions class provides a summarize function for all three primitive iterators.

Example:

val range = 1..100
val summary = range.intIterator.summarize
println('''Sum of elements in range [«range.start»..«range.end»] is «summary.sum»''')

Tip: If you want to know more about the extension methods available on IntegerRange, have a look at chapter Extensions to IntegerRange

Tip

Related JavaDocs: