Class DoubleStreamEx
 Object

 DoubleStreamEx

 All Implemented Interfaces:
AutoCloseable
,BaseStream<Double,DoubleStream>
,DoubleStream
public class DoubleStreamEx extends Object implements DoubleStream
ADoubleStream
implementation with additional functionality Author:
 Tagir Valeev


Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
DoubleStreamEx.DoubleEmitter
A helper interface to build a new stream by emitting elements and creating new emitters in a chain.
Nested classes/interfaces inherited from interface DoubleStream
DoubleStream.Builder


Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
allMatch(DoublePredicate predicate)
boolean
anyMatch(DoublePredicate predicate)
DoubleStreamEx
append(double... values)
Returns a newDoubleStreamEx
which is a concatenation of this stream and the stream containing supplied valuesDoubleStreamEx
append(DoubleStream other)
Creates a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of the other stream.DoubleStreamEx
atLeast(double value)
Returns a stream consisting of the elements of this stream that greater than or equal to the specified value.DoubleStreamEx
atMost(double value)
Returns a stream consisting of the elements of this stream that less than or equal to the specified value.OptionalDouble
average()
StreamEx<Double>
boxed()
<U> U
chain(Function<? super DoubleStreamEx,U> mapper)
Applies the supplied function to this stream and returns the result of the function.void
close()
<R> R
collect(Supplier<R> supplier, ObjDoubleConsumer<R> accumulator, BiConsumer<R,R> combiner)
<A,R>
Rcollect(DoubleCollector<A,R> collector)
Performs a mutable reduction operation on the elements of this stream using anDoubleCollector
which encapsulates the supplier, accumulator and merger functions making easier to reuse collection strategies.static DoubleStreamEx
constant(double value, long length)
Returns a sequential unorderedDoubleStreamEx
of given length which elements are equal to supplied value.long
count()
DoubleStreamEx
distinct()
DoubleStreamEx
dropWhile(DoublePredicate predicate)
Returns a stream consisting of all elements from this stream starting from the first element which does not match the given predicate.static DoubleStreamEx
empty()
Returns an empty sequentialDoubleStreamEx
.DoubleStreamEx
filter(DoublePredicate predicate)
OptionalDouble
findAny()
OptionalDouble
findAny(DoublePredicate predicate)
Returns anOptionalDouble
describing some element of the stream, which matches given predicate, or an emptyOptionalDouble
if there's no matching element.OptionalDouble
findFirst()
OptionalDouble
findFirst(DoublePredicate predicate)
Returns anOptionalDouble
describing the first element of this stream, which matches given predicate, or an emptyOptionalDouble
if there's no matching element.DoubleStreamEx
flatMap(DoubleFunction<? extends DoubleStream> mapper)
IntStreamEx
flatMapToInt(DoubleFunction<? extends IntStream> mapper)
Returns anIntStreamEx
consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.LongStreamEx
flatMapToLong(DoubleFunction<? extends LongStream> mapper)
Returns aLongStreamEx
consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.<R> StreamEx<R>
flatMapToObj(DoubleFunction<? extends Stream<R>> mapper)
Returns aStreamEx
consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.double
foldLeft(double seed, DoubleBinaryOperator accumulator)
Folds the elements of this stream using the provided seed object and accumulation function, going left to right.OptionalDouble
foldLeft(DoubleBinaryOperator accumulator)
Folds the elements of this stream using the provided accumulation function, going left to right.void
forEach(DoubleConsumer action)
void
forEachOrdered(DoubleConsumer action)
static DoubleStreamEx
generate(DoubleSupplier s)
Returns an infinite sequential unordered stream where each element is generated by the providedDoubleSupplier
.DoubleStreamEx
greater(double value)
Returns a stream consisting of the elements of this stream that strictly greater than the specified value.OptionalLong
indexOf(DoublePredicate predicate)
Returns anOptionalLong
describing the zerobased index of the first element of this stream, which matches given predicate, or an emptyOptionalLong
if there's no matching element.DoubleStreamEx
intersperse(int delimiter)
Returns a new stream containing all the elements of the original stream interspersed with given delimiter.boolean
isParallel()
static DoubleStreamEx
iterate(double seed, DoublePredicate predicate, DoubleUnaryOperator f)
Returns a sequential orderedDoubleStreamEx
produced by iterative application of a function to an initial element, conditioned on satisfying the supplied predicate.static DoubleStreamEx
iterate(double seed, DoubleUnaryOperator f)
Returns an infinite sequential orderedDoubleStreamEx
produced by iterative application of a functionf
to an initial elementseed
, producing a stream consisting ofseed
,f(seed)
,f(f(seed))
, etc.PrimitiveIterator.OfDouble
iterator()
String
joining(CharSequence delimiter)
Returns aString
which is the concatenation of the results of callingString.valueOf(double)
on each element of this stream, separated by the specified delimiter, in encounter order.String
joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
Returns aString
which is the concatenation of the results of callingString.valueOf(double)
on each element of this stream, separated by the specified delimiter, with the specified prefix and suffix in encounter order.DoubleStreamEx
less(double value)
Returns a stream consisting of the elements of this stream that strictly less than the specified value.DoubleStreamEx
limit(long maxSize)
DoubleStreamEx
map(DoubleUnaryOperator mapper)
DoubleStreamEx
mapFirst(DoubleUnaryOperator mapper)
Returns a stream where the first element is the replaced with the result of applying the given function while the other elements are left intact.DoubleStreamEx
mapLast(DoubleUnaryOperator mapper)
Returns a stream where the last element is the replaced with the result of applying the given function while the other elements are left intact.<K,V>
EntryStream<K,V>mapToEntry(DoubleFunction<? extends K> keyMapper, DoubleFunction<? extends V> valueMapper)
Returns anEntryStream
consisting of theMap.Entry
objects which keys and values are results of applying the given functions to the elements of this stream.IntStreamEx
mapToInt(DoubleToIntFunction mapper)
LongStreamEx
mapToLong(DoubleToLongFunction mapper)
<U> StreamEx<U>
mapToObj(DoubleFunction<? extends U> mapper)
OptionalDouble
max()
OptionalDouble
max(Comparator<Double> comparator)
Returns the maximum element of this stream according to the providedComparator
.<V extends Comparable<? super V>>
OptionalDoublemaxBy(DoubleFunction<V> keyExtractor)
Returns the maximum element of this stream according to the provided key extractor function.OptionalDouble
maxByDouble(DoubleUnaryOperator keyExtractor)
Returns the maximum element of this stream according to the provided key extractor function.OptionalDouble
maxByInt(DoubleToIntFunction keyExtractor)
Returns the maximum element of this stream according to the provided key extractor function.OptionalDouble
maxByLong(DoubleToLongFunction keyExtractor)
Returns the maximum element of this stream according to the provided key extractor function.OptionalDouble
min()
OptionalDouble
min(Comparator<Double> comparator)
Returns the minimum element of this stream according to the providedComparator
.<V extends Comparable<? super V>>
OptionalDoubleminBy(DoubleFunction<V> keyExtractor)
Returns the minimum element of this stream according to the provided key extractor function.OptionalDouble
minByDouble(DoubleUnaryOperator keyExtractor)
Returns the minimum element of this stream according to the provided key extractor function.OptionalDouble
minByInt(DoubleToIntFunction keyExtractor)
Returns the minimum element of this stream according to the provided key extractor function.OptionalDouble
minByLong(DoubleToLongFunction keyExtractor)
Returns the minimum element of this stream according to the provided key extractor function.boolean
noneMatch(DoublePredicate predicate)
static DoubleStreamEx
of(double element)
Returns a sequentialDoubleStreamEx
containing a single element.static DoubleStreamEx
of(double... elements)
Returns a sequential orderedDoubleStreamEx
whose elements are the specified values.static DoubleStreamEx
of(double[] array, int startInclusive, int endExclusive)
Returns a sequentialDoubleStreamEx
with the specified range of the specified array as its source.static DoubleStreamEx
of(float... elements)
Returns a sequential orderedDoubleStreamEx
whose elements are the specified float values casted to double.static DoubleStreamEx
of(float[] array, int startInclusive, int endExclusive)
Returns a sequentialDoubleStreamEx
with the specified range of the specified array as its source.static DoubleStreamEx
of(Double[] array)
Returns a sequential orderedDoubleStreamEx
whose elements are the unboxed elements of supplied array.static DoubleStreamEx
of(DoubleBuffer buf)
Returns a sequential orderedDoubleStreamEx
whose elements are the values in the suppliedDoubleBuffer
.static DoubleStreamEx
of(Collection<Double> collection)
Returns a sequential orderedDoubleStreamEx
whose elements are the unboxed elements of supplied collection.static DoubleStreamEx
of(OptionalDouble optional)
Returns a sequentialDoubleStreamEx
containing anOptionalDouble
value, if present, otherwise returns an emptyDoubleStreamEx
.static DoubleStreamEx
of(PrimitiveIterator.OfDouble iterator)
Returns a sequential, orderedDoubleStreamEx
created from givenPrimitiveIterator.OfDouble
.static DoubleStreamEx
of(Random random)
Returns an effectively unlimited stream of pseudorandomdouble
values, each between zero (inclusive) and one (exclusive) produced by givenRandom
object.static DoubleStreamEx
of(Random random, double randomNumberOrigin, double randomNumberBound)
Returns an effectively unlimited stream of pseudorandomdouble
values, each conforming to the given origin (inclusive) and bound (exclusive) produced by givenRandom
object.static DoubleStreamEx
of(Random random, long streamSize)
Returns a stream producing the givenstreamSize
number of pseudorandomdouble
values, each between zero (inclusive) and one (exclusive) produced by givenRandom
object.static DoubleStreamEx
of(Random random, long streamSize, double randomNumberOrigin, double randomNumberBound)
Returns a stream producing the givenstreamSize
number of pseudorandomdouble
values, each conforming to the given origin (inclusive) and bound (exclusive) produced by givenRandom
object.static DoubleStreamEx
of(Spliterator.OfDouble spliterator)
Returns a sequentialDoubleStreamEx
created from givenSpliterator.OfDouble
.static DoubleStreamEx
of(DoubleStream stream)
Returns aDoubleStreamEx
object which wraps givenDoubleStream
.DoubleStreamEx
onClose(Runnable closeHandler)
DoubleStreamEx
pairMap(DoubleBinaryOperator mapper)
Returns a stream consisting of the results of applying the given function to the every adjacent pair of elements of this stream.DoubleStreamEx
parallel()
DoubleStreamEx
parallel(ForkJoinPool fjp)
Returns an equivalent stream that is parallel and bound to the suppliedForkJoinPool
.DoubleStreamEx
peek(DoubleConsumer action)
DoubleStreamEx
peekFirst(DoubleConsumer action)
Returns a stream consisting of the elements of this stream, additionally performing the provided action on the first stream element when it's consumed from the resulting stream.DoubleStreamEx
peekLast(DoubleConsumer action)
Returns a stream consisting of the elements of this stream, additionally performing the provided action on the last stream element when it's consumed from the resulting stream.DoubleStreamEx
prefix(DoubleBinaryOperator op)
Returns a stream containing cumulative results of applying the accumulation function going left to right.DoubleStreamEx
prepend(double... values)
Returns a newDoubleStreamEx
which is a concatenation of the stream containing supplied values and this streamDoubleStreamEx
prepend(DoubleStream other)
Creates a lazily concatenated stream whose elements are all the elements of the other stream followed by all the elements of this stream.static DoubleStreamEx
produce(Predicate<DoubleConsumer> producer)
Return an ordered stream produced by consecutive calls of the supplied producer until it returns false.double
reduce(double identity, DoubleBinaryOperator op)
OptionalDouble
reduce(DoubleBinaryOperator op)
DoubleStreamEx
remove(DoublePredicate predicate)
Returns a stream consisting of the elements of this stream that don't match the given predicate.DoubleStreamEx
reverseSorted()
Returns a stream consisting of the elements of this stream in reverse sorted order.double[]
scanLeft(double seed, DoubleBinaryOperator accumulator)
Produces an array containing cumulative results of applying the accumulation function going left to right using given seed value.double[]
scanLeft(DoubleBinaryOperator accumulator)
Produces an array containing cumulative results of applying the accumulation function going left to right.DoubleStreamEx
sequential()
DoubleStreamEx
skip(long n)
DoubleStreamEx
sorted()
DoubleStreamEx
sorted(Comparator<Double> comparator)
Returns a stream consisting of the elements of this stream sorted according to the given comparator.<V extends Comparable<? super V>>
DoubleStreamExsortedBy(DoubleFunction<V> keyExtractor)
Returns a stream consisting of the elements of this stream, sorted according to the natural order of the keys extracted by provided function.DoubleStreamEx
sortedByDouble(DoubleUnaryOperator keyExtractor)
Returns a stream consisting of the elements of this stream, sorted according to the double values extracted by provided function.DoubleStreamEx
sortedByInt(DoubleToIntFunction keyExtractor)
Returns a stream consisting of the elements of this stream, sorted according to the int values extracted by provided function.DoubleStreamEx
sortedByLong(DoubleToLongFunction keyExtractor)
Returns a stream consisting of the elements of this stream, sorted according to the long values extracted by provided function.SPLTR
spliterator()
double
sum()
DoubleSummaryStatistics
summaryStatistics()
DoubleStreamEx
takeWhile(DoublePredicate predicate)
Returns a stream consisting of all elements from this stream until the first element which does not match the given predicate is found.DoubleStreamEx
takeWhileInclusive(DoublePredicate predicate)
Returns a stream consisting of all elements from this stream until the first element which does not match the given predicate is found (including the first mismatching element).double[]
toArray()
float[]
toFloatArray()
Returns afloat[]
array containing the elements of this stream which are converted to floats using(float)
cast operation.DoubleStreamEx
unordered()
static DoubleStreamEx
zip(double[] first, double[] second, DoubleBinaryOperator mapper)
Returns a sequentialDoubleStreamEx
containing the results of applying the given function to the corresponding pairs of values in given two arrays.
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods inherited from interface BaseStream
close, isParallel

Methods inherited from interface DoubleStream
spliterator




Method Detail

unordered
public DoubleStreamEx unordered()
 Specified by:
unordered
in interfaceBaseStream<Double,DoubleStream>

onClose
public DoubleStreamEx onClose(Runnable closeHandler)
 Specified by:
onClose
in interfaceBaseStream<Double,DoubleStream>

filter
public DoubleStreamEx filter(DoublePredicate predicate)
 Specified by:
filter
in interfaceDoubleStream

remove
public DoubleStreamEx remove(DoublePredicate predicate)
Returns a stream consisting of the elements of this stream that don't match the given predicate.This is an intermediate operation.
 Parameters:
predicate
 a noninterfering, stateless predicate to apply to each element to determine if it should be excluded Returns:
 the new stream

greater
public DoubleStreamEx greater(double value)
Returns a stream consisting of the elements of this stream that strictly greater than the specified value.This is an intermediate operation.
 Parameters:
value
 a value to compare to Returns:
 the new stream
 Since:
 0.2.3

less
public DoubleStreamEx less(double value)
Returns a stream consisting of the elements of this stream that strictly less than the specified value.This is an intermediate operation.
 Parameters:
value
 a value to compare to Returns:
 the new stream
 Since:
 0.2.3

atLeast
public DoubleStreamEx atLeast(double value)
Returns a stream consisting of the elements of this stream that greater than or equal to the specified value.This is an intermediate operation.
 Parameters:
value
 a value to compare to Returns:
 the new stream
 Since:
 0.2.3

atMost
public DoubleStreamEx atMost(double value)
Returns a stream consisting of the elements of this stream that less than or equal to the specified value.This is an intermediate operation.
 Parameters:
value
 a value to compare to Returns:
 the new stream
 Since:
 0.2.3

map
public DoubleStreamEx map(DoubleUnaryOperator mapper)
 Specified by:
map
in interfaceDoubleStream

mapFirst
public DoubleStreamEx mapFirst(DoubleUnaryOperator mapper)
Returns a stream where the first element is the replaced with the result of applying the given function while the other elements are left intact.This is a quasiintermediate operation.
 Parameters:
mapper
 a noninterfering , stateless function to apply to the first element Returns:
 the new stream
 Since:
 0.4.1

mapLast
public DoubleStreamEx mapLast(DoubleUnaryOperator mapper)
Returns a stream where the last element is the replaced with the result of applying the given function while the other elements are left intact.This is a quasiintermediate operation.
The mapper function is called at most once. It could be not called at all if the stream is empty or there is shortcircuiting operation downstream.
 Parameters:
mapper
 a noninterfering , stateless function to apply to the last element Returns:
 the new stream
 Since:
 0.4.1

mapToObj
public <U> StreamEx<U> mapToObj(DoubleFunction<? extends U> mapper)
 Specified by:
mapToObj
in interfaceDoubleStream

mapToInt
public IntStreamEx mapToInt(DoubleToIntFunction mapper)
 Specified by:
mapToInt
in interfaceDoubleStream

mapToLong
public LongStreamEx mapToLong(DoubleToLongFunction mapper)
 Specified by:
mapToLong
in interfaceDoubleStream

mapToEntry
public <K,V> EntryStream<K,V> mapToEntry(DoubleFunction<? extends K> keyMapper, DoubleFunction<? extends V> valueMapper)
Returns anEntryStream
consisting of theMap.Entry
objects which keys and values are results of applying the given functions to the elements of this stream.This is an intermediate operation.
 Type Parameters:
K
 TheEntry
key typeV
 TheEntry
value type Parameters:
keyMapper
 a noninterfering, stateless function to apply to each elementvalueMapper
 a noninterfering, stateless function to apply to each element Returns:
 the new stream
 Since:
 0.3.1

flatMap
public DoubleStreamEx flatMap(DoubleFunction<? extends DoubleStream> mapper)
 Specified by:
flatMap
in interfaceDoubleStream

flatMapToInt
public IntStreamEx flatMapToInt(DoubleFunction<? extends IntStream> mapper)
Returns anIntStreamEx
consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element. Each mapped stream is closed after its contents have been placed into this stream. (If a mapped stream isnull
an empty stream is used, instead.)This is an intermediate operation.
 Parameters:
mapper
 a noninterfering, stateless function to apply to each element which produces anIntStream
of new values Returns:
 the new stream
 Since:
 0.3.0

flatMapToLong
public LongStreamEx flatMapToLong(DoubleFunction<? extends LongStream> mapper)
Returns aLongStreamEx
consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element. Each mapped stream is closed after its contents have been placed into this stream. (If a mapped stream isnull
an empty stream is used, instead.)This is an intermediate operation.
 Parameters:
mapper
 a noninterfering, stateless function to apply to each element which produces aLongStream
of new values Returns:
 the new stream
 Since:
 0.3.0

flatMapToObj
public <R> StreamEx<R> flatMapToObj(DoubleFunction<? extends Stream<R>> mapper)
Returns aStreamEx
consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element. Each mapped stream is closed after its contents have been placed into this stream. (If a mapped stream isnull
an empty stream is used, instead.)This is an intermediate operation.
 Type Parameters:
R
 The element type of the new stream Parameters:
mapper
 a noninterfering, stateless function to apply to each element which produces aStream
of new values Returns:
 the new stream
 Since:
 0.3.0

intersperse
public DoubleStreamEx intersperse(int delimiter)
Returns a new stream containing all the elements of the original stream interspersed with given delimiter.For example,
DoubleStreamEx.of(1, 2, 3).intersperse(4)
will yield a stream containing five elements: 1, 4, 2, 4, 3.This is an intermediate operation.
 Parameters:
delimiter
 a delimiter to be inserted between each pair of elements Returns:
 the new stream
 Since:
 0.6.6

distinct
public DoubleStreamEx distinct()
 Specified by:
distinct
in interfaceDoubleStream

sorted
public DoubleStreamEx sorted()
 Specified by:
sorted
in interfaceDoubleStream

sorted
public DoubleStreamEx sorted(Comparator<Double> comparator)
Returns a stream consisting of the elements of this stream sorted according to the given comparator. Stream elements are boxed before passing to the comparator.For ordered streams, the sort is stable. For unordered streams, no stability guarantees are made.
This is a stateful intermediate operation.
 Parameters:
comparator
 a noninterfering , statelessComparator
to be used to compare stream elements Returns:
 the new stream

reverseSorted
public DoubleStreamEx reverseSorted()
Returns a stream consisting of the elements of this stream in reverse sorted order. The elements are compared for equality according toDouble.compare(double, double)
.This is a stateful intermediate operation.
 Returns:
 the new stream
 Since:
 0.0.8

sortedBy
public <V extends Comparable<? super V>> DoubleStreamEx sortedBy(DoubleFunction<V> keyExtractor)
Returns a stream consisting of the elements of this stream, sorted according to the natural order of the keys extracted by provided function.For ordered streams, the sort is stable. For unordered streams, no stability guarantees are made.
This is a stateful intermediate operation.
 Type Parameters:
V
 the type of theComparable
sort key Parameters:
keyExtractor
 a noninterfering , stateless function to be used to extract sorting keys Returns:
 the new stream

sortedByInt
public DoubleStreamEx sortedByInt(DoubleToIntFunction keyExtractor)
Returns a stream consisting of the elements of this stream, sorted according to the int values extracted by provided function.For ordered streams, the sort is stable. For unordered streams, no stability guarantees are made.
This is a stateful intermediate operation.
 Parameters:
keyExtractor
 a noninterfering , stateless function to be used to extract sorting keys Returns:
 the new stream

sortedByLong
public DoubleStreamEx sortedByLong(DoubleToLongFunction keyExtractor)
Returns a stream consisting of the elements of this stream, sorted according to the long values extracted by provided function.For ordered streams, the sort is stable. For unordered streams, no stability guarantees are made.
This is a stateful intermediate operation.
 Parameters:
keyExtractor
 a noninterfering , stateless function to be used to extract sorting keys Returns:
 the new stream

sortedByDouble
public DoubleStreamEx sortedByDouble(DoubleUnaryOperator keyExtractor)
Returns a stream consisting of the elements of this stream, sorted according to the double values extracted by provided function.For ordered streams, the sort is stable. For unordered streams, no stability guarantees are made.
This is a stateful intermediate operation.
 Parameters:
keyExtractor
 a noninterfering , stateless function to be used to extract sorting keys Returns:
 the new stream

peek
public DoubleStreamEx peek(DoubleConsumer action)
 Specified by:
peek
in interfaceDoubleStream

peekFirst
public DoubleStreamEx peekFirst(DoubleConsumer action)
Returns a stream consisting of the elements of this stream, additionally performing the provided action on the first stream element when it's consumed from the resulting stream.This is an intermediate operation.
The action is called at most once. For parallel stream pipelines, it's not guaranteed in which thread it will be executed, so if it modifies shared state, it is responsible for providing the required synchronization.
Note that the action might not be called at all if the first element is not consumed from the input (for example, if there's shortcircuiting operation downstream which stopped the stream before the first element).
This method exists mainly to support debugging.
 Parameters:
action
 a noninterfering action to perform on the first stream element as it is consumed from the stream Returns:
 the new stream
 Since:
 0.6.0

peekLast
public DoubleStreamEx peekLast(DoubleConsumer action)
Returns a stream consisting of the elements of this stream, additionally performing the provided action on the last stream element when it's consumed from the resulting stream.This is an intermediate operation.
The action is called at most once. For parallel stream pipelines, it's not guaranteed in which thread it will be executed, so if it modifies shared state, it is responsible for providing the required synchronization.
Note that the action might not be called at all if the last element is not consumed from the input (for example, if there's shortcircuiting operation downstream).
This method exists mainly to support debugging.
 Parameters:
action
 a noninterfering action to perform on the first stream element as it is consumed from the stream Returns:
 the new stream
 Since:
 0.6.0

limit
public DoubleStreamEx limit(long maxSize)
 Specified by:
limit
in interfaceDoubleStream

skip
public DoubleStreamEx skip(long n)
 Specified by:
skip
in interfaceDoubleStream

forEach
public void forEach(DoubleConsumer action)
 Specified by:
forEach
in interfaceDoubleStream

forEachOrdered
public void forEachOrdered(DoubleConsumer action)
 Specified by:
forEachOrdered
in interfaceDoubleStream

toArray
public double[] toArray()
 Specified by:
toArray
in interfaceDoubleStream

toFloatArray
public float[] toFloatArray()
Returns afloat[]
array containing the elements of this stream which are converted to floats using(float)
cast operation.This is a terminal operation.
 Returns:
 an array containing the elements of this stream
 Since:
 0.3.0

reduce
public double reduce(double identity, DoubleBinaryOperator op)
 Specified by:
reduce
in interfaceDoubleStream

reduce
public OptionalDouble reduce(DoubleBinaryOperator op)
 Specified by:
reduce
in interfaceDoubleStream

foldLeft
public OptionalDouble foldLeft(DoubleBinaryOperator accumulator)
Folds the elements of this stream using the provided accumulation function, going left to right. This is equivalent to:boolean foundAny = false; double result = 0; for (double element : this stream) { if (!foundAny) { foundAny = true; result = element; } else result = accumulator.apply(result, element); } return foundAny ? OptionalDouble.of(result) : OptionalDouble.empty();
This is a terminal operation.
This method cannot take all the advantages of parallel streams as it must process elements strictly left to right. If your accumulator function is associative, consider using
reduce(DoubleBinaryOperator)
method.For parallel stream it's not guaranteed that accumulator will always be executed in the same thread.
 Parameters:
accumulator
 a noninterfering , stateless function for incorporating an additional element into a result Returns:
 the result of the folding
 Since:
 0.4.0
 See Also:
foldLeft(double, DoubleBinaryOperator)
,reduce(DoubleBinaryOperator)

foldLeft
public double foldLeft(double seed, DoubleBinaryOperator accumulator)
Folds the elements of this stream using the provided seed object and accumulation function, going left to right. This is equivalent to:double result = identity; for (double element : this stream) result = accumulator.apply(result, element) return result;
This is a terminal operation.
This method cannot take all the advantages of parallel streams as it must process elements strictly left to right. If your accumulator function is associative, consider using
reduce(double, DoubleBinaryOperator)
method.For parallel stream it's not guaranteed that accumulator will always be executed in the same thread.
 Parameters:
seed
 the starting valueaccumulator
 a noninterfering , stateless function for incorporating an additional element into a result Returns:
 the result of the folding
 Since:
 0.4.0
 See Also:
reduce(double, DoubleBinaryOperator)
,foldLeft(DoubleBinaryOperator)

scanLeft
public double[] scanLeft(DoubleBinaryOperator accumulator)
Produces an array containing cumulative results of applying the accumulation function going left to right.This is a terminal operation.
For parallel stream it's not guaranteed that accumulator will always be executed in the same thread.
This method cannot take all the advantages of parallel streams as it must process elements strictly left to right.
 Parameters:
accumulator
 a noninterfering , stateless function for incorporating an additional element into a result Returns:
 the array where the first element is the first element of this stream and every successor element is the result of applying accumulator function to the previous array element and the corresponding stream element. The resulting array has the same length as this stream.
 Since:
 0.5.1
 See Also:
foldLeft(DoubleBinaryOperator)

scanLeft
public double[] scanLeft(double seed, DoubleBinaryOperator accumulator)
Produces an array containing cumulative results of applying the accumulation function going left to right using given seed value.This is a terminal operation.
For parallel stream it's not guaranteed that accumulator will always be executed in the same thread.
This method cannot take all the advantages of parallel streams as it must process elements strictly left to right.
 Parameters:
seed
 the starting valueaccumulator
 a noninterfering , stateless function for incorporating an additional element into a result Returns:
 the array where the first element is the seed and every successor element is the result of applying accumulator function to the previous array element and the corresponding stream element. The resulting array is one element longer than this stream.
 Since:
 0.5.1
 See Also:
foldLeft(double, DoubleBinaryOperator)

collect
public <R> R collect(Supplier<R> supplier, ObjDoubleConsumer<R> accumulator, BiConsumer<R,R> combiner)
 Specified by:
collect
in interfaceDoubleStream
 See Also:
collect(DoubleCollector)

collect
public <A,R> R collect(DoubleCollector<A,R> collector)
Performs a mutable reduction operation on the elements of this stream using anDoubleCollector
which encapsulates the supplier, accumulator and merger functions making easier to reuse collection strategies.Like
reduce(double, DoubleBinaryOperator)
,collect
operations can be parallelized without requiring additional synchronization.This is a terminal operation.
 Type Parameters:
A
 the intermediate accumulation type of theDoubleCollector
R
 type of the result Parameters:
collector
 theDoubleCollector
describing the reduction Returns:
 the result of the reduction
 Since:
 0.3.0
 See Also:
collect(Supplier, ObjDoubleConsumer, BiConsumer)

sum
public double sum()
 Specified by:
sum
in interfaceDoubleStream

min
public OptionalDouble min()
 Specified by:
min
in interfaceDoubleStream

min
public OptionalDouble min(Comparator<Double> comparator)
Returns the minimum element of this stream according to the providedComparator
.This is a terminal operation.
 Parameters:
comparator
 a noninterfering, statelessComparator
to compare elements of this stream Returns:
 an
OptionalDouble
describing the minimum element of this stream, or an emptyOptionalDouble
if the stream is empty  Since:
 0.1.2

minBy
public <V extends Comparable<? super V>> OptionalDouble minBy(DoubleFunction<V> keyExtractor)
Returns the minimum element of this stream according to the provided key extractor function.This is a terminal operation.
 Type Parameters:
V
 the type of theComparable
sort key Parameters:
keyExtractor
 a noninterfering, stateless function Returns:
 an
OptionalDouble
describing the first element of this stream for which the lowest value was returned by key extractor, or an emptyOptionalDouble
if the stream is empty  Since:
 0.1.2

minByInt
public OptionalDouble minByInt(DoubleToIntFunction keyExtractor)
Returns the minimum element of this stream according to the provided key extractor function.This is a terminal operation.
 Parameters:
keyExtractor
 a noninterfering, stateless function Returns:
 an
OptionalDouble
describing the first element of this stream for which the lowest value was returned by key extractor, or an emptyOptionalDouble
if the stream is empty  Since:
 0.1.2

minByLong
public OptionalDouble minByLong(DoubleToLongFunction keyExtractor)
Returns the minimum element of this stream according to the provided key extractor function.This is a terminal operation.
 Parameters:
keyExtractor
 a noninterfering, stateless function Returns:
 an
OptionalDouble
describing the first element of this stream for which the lowest value was returned by key extractor, or an emptyOptionalDouble
if the stream is empty  Since:
 0.1.2

minByDouble
public OptionalDouble minByDouble(DoubleUnaryOperator keyExtractor)
Returns the minimum element of this stream according to the provided key extractor function.This is a terminal operation.
 Parameters:
keyExtractor
 a noninterfering, stateless function Returns:
 an
OptionalDouble
describing the first element of this stream for which the lowest value was returned by key extractor, or an emptyOptionalDouble
if the stream is empty  Since:
 0.1.2

max
public OptionalDouble max()
 Specified by:
max
in interfaceDoubleStream

max
public OptionalDouble max(Comparator<Double> comparator)
Returns the maximum element of this stream according to the providedComparator
.This is a terminal operation.
 Parameters:
comparator
 a noninterfering, statelessComparator
to compare elements of this stream Returns:
 an
OptionalDouble
describing the maximum element of this stream, or an emptyOptionalDouble
if the stream is empty

maxBy
public <V extends Comparable<? super V>> OptionalDouble maxBy(DoubleFunction<V> keyExtractor)
Returns the maximum element of this stream according to the provided key extractor function.This is a terminal operation.
 Type Parameters:
V
 the type of theComparable
sort key Parameters:
keyExtractor
 a noninterfering, stateless function Returns:
 an
OptionalDouble
describing the first element of this stream for which the highest value was returned by key extractor, or an emptyOptionalDouble
if the stream is empty  Since:
 0.1.2

maxByInt
public OptionalDouble maxByInt(DoubleToIntFunction keyExtractor)
Returns the maximum element of this stream according to the provided key extractor function.This is a terminal operation.
 Parameters:
keyExtractor
 a noninterfering, stateless function Returns:
 an
OptionalDouble
describing the first element of this stream for which the highest value was returned by key extractor, or an emptyOptionalDouble
if the stream is empty  Since:
 0.1.2

maxByLong
public OptionalDouble maxByLong(DoubleToLongFunction keyExtractor)
Returns the maximum element of this stream according to the provided key extractor function.This is a terminal operation.
 Parameters:
keyExtractor
 a noninterfering, stateless function Returns:
 an
OptionalDouble
describing the first element of this stream for which the highest value was returned by key extractor, or an emptyOptionalDouble
if the stream is empty  Since:
 0.1.2

maxByDouble
public OptionalDouble maxByDouble(DoubleUnaryOperator keyExtractor)
Returns the maximum element of this stream according to the provided key extractor function.This is a terminal operation.
 Parameters:
keyExtractor
 a noninterfering, stateless function Returns:
 an
OptionalDouble
describing the first element of this stream for which the highest value was returned by key extractor, or an emptyOptionalDouble
if the stream is empty  Since:
 0.1.2

count
public long count()
 Specified by:
count
in interfaceDoubleStream

average
public OptionalDouble average()
 Specified by:
average
in interfaceDoubleStream

summaryStatistics
public DoubleSummaryStatistics summaryStatistics()
 Specified by:
summaryStatistics
in interfaceDoubleStream

anyMatch
public boolean anyMatch(DoublePredicate predicate)
 Specified by:
anyMatch
in interfaceDoubleStream

allMatch
public boolean allMatch(DoublePredicate predicate)
 Specified by:
allMatch
in interfaceDoubleStream

noneMatch
public boolean noneMatch(DoublePredicate predicate)
 Specified by:
noneMatch
in interfaceDoubleStream

findFirst
public OptionalDouble findFirst()
 Specified by:
findFirst
in interfaceDoubleStream

findFirst
public OptionalDouble findFirst(DoublePredicate predicate)
Returns anOptionalDouble
describing the first element of this stream, which matches given predicate, or an emptyOptionalDouble
if there's no matching element.This is a shortcircuiting terminal operation.
 Parameters:
predicate
 a noninterfering , stateless predicate which returned value should match Returns:
 an
OptionalDouble
describing the first matching element of this stream, or an emptyOptionalDouble
if there's no matching element  See Also:
findFirst()

findAny
public OptionalDouble findAny()
 Specified by:
findAny
in interfaceDoubleStream

findAny
public OptionalDouble findAny(DoublePredicate predicate)
Returns anOptionalDouble
describing some element of the stream, which matches given predicate, or an emptyOptionalDouble
if there's no matching element.This is a shortcircuiting terminal operation.
The behavior of this operation is explicitly nondeterministic; it is free to select any element in the stream. This is to allow for maximal performance in parallel operations; the cost is that multiple invocations on the same source may not return the same result. (If a stable result is desired, use
findFirst(DoublePredicate)
instead.) Parameters:
predicate
 a noninterfering , stateless predicate which returned value should match Returns:
 an
OptionalDouble
describing some matching element of this stream, or an emptyOptionalDouble
if there's no matching element  See Also:
findAny()
,findFirst(DoublePredicate)

indexOf
public OptionalLong indexOf(DoublePredicate predicate)
Returns anOptionalLong
describing the zerobased index of the first element of this stream, which matches given predicate, or an emptyOptionalLong
if there's no matching element.This is a shortcircuiting terminal operation.
 Parameters:
predicate
 a noninterfering , stateless predicate which returned value should match Returns:
 an
OptionalLong
describing the index of the first matching element of this stream, or an emptyOptionalLong
if there's no matching element.  Since:
 0.4.0
 See Also:
findFirst(DoublePredicate)

boxed
public StreamEx<Double> boxed()
 Specified by:
boxed
in interfaceDoubleStream

sequential
public DoubleStreamEx sequential()
 Specified by:
sequential
in interfaceBaseStream<Double,DoubleStream>
 Specified by:
sequential
in interfaceDoubleStream

parallel
public DoubleStreamEx parallel()
If this stream was created using
parallel(ForkJoinPool)
, the new stream forgets about supplied customForkJoinPool
and its terminal operation will be executed in common pool. Specified by:
parallel
in interfaceBaseStream<Double,DoubleStream>
 Specified by:
parallel
in interfaceDoubleStream

parallel
public DoubleStreamEx parallel(ForkJoinPool fjp)
Returns an equivalent stream that is parallel and bound to the suppliedForkJoinPool
.This is an intermediate operation.
The terminal operation of this stream or any derived stream (except the streams created via
BaseStream.parallel()
orBaseStream.sequential()
methods) will be executed inside the suppliedForkJoinPool
. If current thread does not belong to that pool, it will wait till calculation finishes. Parameters:
fjp
 aForkJoinPool
to submit the stream operation to. Returns:
 a parallel stream bound to the supplied
ForkJoinPool

iterator
public PrimitiveIterator.OfDouble iterator()
 Specified by:
iterator
in interfaceBaseStream<Double,DoubleStream>
 Specified by:
iterator
in interfaceDoubleStream

append
public DoubleStreamEx append(double... values)
Returns a newDoubleStreamEx
which is a concatenation of this stream and the stream containing supplied valuesThis is a quasiintermediate operation.
 Parameters:
values
 the values to append to the stream Returns:
 the new stream

append
public DoubleStreamEx append(DoubleStream other)
Creates a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of the other stream. The resulting stream is ordered if both of the input streams are ordered, and parallel if either of the input streams is parallel. When the resulting stream is closed, the close handlers for both input streams are invoked. Parameters:
other
 the other stream Returns:
 this stream appended by the other stream
 See Also:
DoubleStream.concat(DoubleStream, DoubleStream)

prepend
public DoubleStreamEx prepend(double... values)
Returns a newDoubleStreamEx
which is a concatenation of the stream containing supplied values and this streamThis is a quasiintermediate operation.
 Parameters:
values
 the values to prepend to the stream Returns:
 the new stream

prepend
public DoubleStreamEx prepend(DoubleStream other)
Creates a lazily concatenated stream whose elements are all the elements of the other stream followed by all the elements of this stream. The resulting stream is ordered if both of the input streams are ordered, and parallel if either of the input streams is parallel. When the resulting stream is closed, the close handlers for both input streams are invoked. Parameters:
other
 the other stream Returns:
 this stream prepended by the other stream
 See Also:
DoubleStream.concat(DoubleStream, DoubleStream)

pairMap
public DoubleStreamEx pairMap(DoubleBinaryOperator mapper)
Returns a stream consisting of the results of applying the given function to the every adjacent pair of elements of this stream.This is a quasiintermediate operation.
The output stream will contain one element less than this stream. If this stream contains zero or one element the output stream will be empty.
 Parameters:
mapper
 a noninterfering, stateless function to apply to each adjacent pair of this stream elements. Returns:
 the new stream
 Since:
 0.2.1

joining
public String joining(CharSequence delimiter)
Returns aString
which is the concatenation of the results of callingString.valueOf(double)
on each element of this stream, separated by the specified delimiter, in encounter order.This is a terminal operation.
 Parameters:
delimiter
 the delimiter to be used between each element Returns:
 the result of concatenation. For empty input stream empty String is returned.
 Since:
 0.3.1

joining
public String joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
Returns aString
which is the concatenation of the results of callingString.valueOf(double)
on each element of this stream, separated by the specified delimiter, with the specified prefix and suffix in encounter order.This is a terminal operation.
 Parameters:
delimiter
 the delimiter to be used between each elementprefix
 the sequence of characters to be used at the beginning of the joined resultsuffix
 the sequence of characters to be used at the end of the joined result Returns:
 the result of concatenation. For empty input stream
prefix + suffix
is returned.  Since:
 0.3.1

takeWhile
public DoubleStreamEx takeWhile(DoublePredicate predicate)
Returns a stream consisting of all elements from this stream until the first element which does not match the given predicate is found.This is a shortcircuiting stateful operation. It can be either intermediate or quasiintermediate. When using with JDK 1.9 or higher it calls the corresponding JDK 1.9 implementation. When using with JDK 1.8 it uses own implementation.
While this operation is quite cheap for sequential stream, it can be quite expensive on parallel pipelines.
 Specified by:
takeWhile
in interfaceDoubleStream
 Parameters:
predicate
 a noninterfering, stateless predicate to apply to elements. Returns:
 the new stream.
 Since:
 0.3.6
 See Also:
takeWhileInclusive(DoublePredicate)
,dropWhile(DoublePredicate)

takeWhileInclusive
public DoubleStreamEx takeWhileInclusive(DoublePredicate predicate)
Returns a stream consisting of all elements from this stream until the first element which does not match the given predicate is found (including the first mismatching element).This is a quasiintermediate operation.
While this operation is quite cheap for sequential stream, it can be quite expensive on parallel pipelines.
 Parameters:
predicate
 a noninterfering, stateless predicate to apply to elements. Returns:
 the new stream.
 Since:
 0.5.5
 See Also:
takeWhile(DoublePredicate)

dropWhile
public DoubleStreamEx dropWhile(DoublePredicate predicate)
Returns a stream consisting of all elements from this stream starting from the first element which does not match the given predicate. If the predicate is true for all stream elements, an empty stream is returned.This is a stateful operation. It can be either intermediate or quasiintermediate. When using with JDK 1.9 or higher it calls the corresponding JDK 1.9 implementation. When using with JDK 1.8 it uses own implementation.
While this operation is quite cheap for sequential stream, it can be quite expensive on parallel pipelines.
 Specified by:
dropWhile
in interfaceDoubleStream
 Parameters:
predicate
 a noninterfering, stateless predicate to apply to elements. Returns:
 the new stream.
 Since:
 0.3.6

prefix
public DoubleStreamEx prefix(DoubleBinaryOperator op)
Returns a stream containing cumulative results of applying the accumulation function going left to right.This is a stateful quasiintermediate operation.
This operation resembles
scanLeft(DoubleBinaryOperator)
, but unlikescanLeft
this operation is intermediate and accumulation function must be associative.This method cannot take all the advantages of parallel streams as it must process elements strictly left to right. Using an unordered source or removing the ordering constraint with
unordered()
may improve the parallel processing speed. Parameters:
op
 an associative , noninterfering , stateless function for computing the next element based on the previous one Returns:
 the new stream.
 Since:
 0.6.1
 See Also:
scanLeft(DoubleBinaryOperator)

chain
public <U> U chain(Function<? super DoubleStreamEx,U> mapper)
Applies the supplied function to this stream and returns the result of the function.This method can be used to add more functionality in the fluent style. For example, consider userdefined static method
batches(stream, n)
which breaks the stream into batches of given length. Normally you would writebatches(StreamEx.of(input).map(...), 10).filter(...)
. Using thechain()
method you can write in more fluent manner:StreamEx.of(input).map(...).chain(s > batches(s, 10)).filter(...)
.You could even go further and define a method which returns a function like
<T> UnaryOperator<StreamEx<T>> batches(int n)
and use it like this:StreamEx.of(input).map(...).chain(batches(10)).filter(...)
. Type Parameters:
U
 the type of the function result. Parameters:
mapper
 function to invoke. Returns:
 the result of the function invocation.

empty
public static DoubleStreamEx empty()
Returns an empty sequentialDoubleStreamEx
. Returns:
 an empty sequential stream

of
public static DoubleStreamEx of(double element)
Returns a sequentialDoubleStreamEx
containing a single element. Parameters:
element
 the single element Returns:
 a singleton sequential stream

of
public static DoubleStreamEx of(double... elements)
Returns a sequential orderedDoubleStreamEx
whose elements are the specified values. Parameters:
elements
 the elements of the new stream Returns:
 the new stream

of
public static DoubleStreamEx of(double[] array, int startInclusive, int endExclusive)
Returns a sequentialDoubleStreamEx
with the specified range of the specified array as its source. Parameters:
array
 the array, assumed to be unmodified during usestartInclusive
 the first index to cover, inclusiveendExclusive
 index immediately past the last index to cover Returns:
 an
DoubleStreamEx
for the array range  Throws:
ArrayIndexOutOfBoundsException
 ifstartInclusive
is negative,endExclusive
is less thanstartInclusive
, orendExclusive
is greater than the array size Since:
 0.1.1
 See Also:
Arrays.stream(double[], int, int)

of
public static DoubleStreamEx of(Double[] array)
Returns a sequential orderedDoubleStreamEx
whose elements are the unboxed elements of supplied array. Parameters:
array
 the array to create the stream from. Returns:
 the new stream
 Since:
 0.5.0
 See Also:
Arrays.stream(Object[])

of
public static DoubleStreamEx of(DoubleBuffer buf)
Returns a sequential orderedDoubleStreamEx
whose elements are the values in the suppliedDoubleBuffer
.The resulting stream covers only a portion of
DoubleBuffer
content which starts with position (inclusive) and ends with limit (exclusive). Changes in position and limit after the stream creation don't affect the stream.The resulting stream does not change the internal
DoubleBuffer
state. Parameters:
buf
 theDoubleBuffer
to create a stream from Returns:
 the new stream
 Since:
 0.6.2

of
public static DoubleStreamEx of(float... elements)
Returns a sequential orderedDoubleStreamEx
whose elements are the specified float values casted to double. Parameters:
elements
 the elements of the new stream Returns:
 the new stream
 Since:
 0.2.0

of
public static DoubleStreamEx of(float[] array, int startInclusive, int endExclusive)
Returns a sequentialDoubleStreamEx
with the specified range of the specified array as its source. Array values will be casted to double. Parameters:
array
 the array, assumed to be unmodified during usestartInclusive
 the first index to cover, inclusiveendExclusive
 index immediately past the last index to cover Returns:
 an
IntStreamEx
for the array range  Throws:
ArrayIndexOutOfBoundsException
 ifstartInclusive
is negative,endExclusive
is less thanstartInclusive
, orendExclusive
is greater than the array size Since:
 0.2.0

of
public static DoubleStreamEx of(DoubleStream stream)
Returns aDoubleStreamEx
object which wraps givenDoubleStream
.The supplied stream must not be consumed or closed when this method is called. No operation must be performed on the supplied stream after it's wrapped.
 Parameters:
stream
 original stream Returns:
 the wrapped stream
 Since:
 0.0.8

of
public static DoubleStreamEx of(Spliterator.OfDouble spliterator)
Returns a sequentialDoubleStreamEx
created from givenSpliterator.OfDouble
. Parameters:
spliterator
 a spliterator to create the stream from. Returns:
 the new stream
 Since:
 0.3.4

of
public static DoubleStreamEx of(PrimitiveIterator.OfDouble iterator)
Returns a sequential, orderedDoubleStreamEx
created from givenPrimitiveIterator.OfDouble
.This method is roughly equivalent to
DoubleStreamEx.of(Spliterators.spliteratorUnknownSize(iterator, ORDERED))
, but may show better performance for parallel processing.Use this method only if you cannot provide better Stream source.
 Parameters:
iterator
 an iterator to create the stream from. Returns:
 the new stream
 Since:
 0.5.1

of
public static DoubleStreamEx of(OptionalDouble optional)
Returns a sequentialDoubleStreamEx
containing anOptionalDouble
value, if present, otherwise returns an emptyDoubleStreamEx
. Parameters:
optional
 the optional to create a stream of Returns:
 a stream with an
OptionalDouble
value if present, otherwise an empty stream  Since:
 0.1.1

of
public static DoubleStreamEx of(Collection<Double> collection)
Returns a sequential orderedDoubleStreamEx
whose elements are the unboxed elements of supplied collection. Parameters:
collection
 the collection to create the stream from. Returns:
 the new stream
 See Also:
Collection.stream()

of
public static DoubleStreamEx of(Random random)
Returns an effectively unlimited stream of pseudorandomdouble
values, each between zero (inclusive) and one (exclusive) produced by givenRandom
object.A pseudorandom
double
value is generated as if it's the result of calling the methodRandom.nextDouble()
. Parameters:
random
 aRandom
object to produce the stream from Returns:
 a stream of pseudorandom
double
values  See Also:
Random.doubles()

of
public static DoubleStreamEx of(Random random, long streamSize)
Returns a stream producing the givenstreamSize
number of pseudorandomdouble
values, each between zero (inclusive) and one (exclusive) produced by givenRandom
object.A pseudorandom
double
value is generated as if it's the result of calling the methodRandom.nextDouble()
. Parameters:
random
 aRandom
object to produce the stream fromstreamSize
 the number of values to generate Returns:
 a stream of pseudorandom
double
values  See Also:
Random.doubles(long)

of
public static DoubleStreamEx of(Random random, double randomNumberOrigin, double randomNumberBound)
Returns an effectively unlimited stream of pseudorandomdouble
values, each conforming to the given origin (inclusive) and bound (exclusive) produced by givenRandom
object. Parameters:
random
 aRandom
object to produce the stream fromrandomNumberOrigin
 the origin (inclusive) of each random valuerandomNumberBound
 the bound (exclusive) of each random value Returns:
 a stream of pseudorandom
double
values, each with the given origin (inclusive) and bound (exclusive)  See Also:
Random.doubles(double, double)

of
public static DoubleStreamEx of(Random random, long streamSize, double randomNumberOrigin, double randomNumberBound)
Returns a stream producing the givenstreamSize
number of pseudorandomdouble
values, each conforming to the given origin (inclusive) and bound (exclusive) produced by givenRandom
object. Parameters:
random
 aRandom
object to produce the stream fromrandomNumberOrigin
 the origin (inclusive) of each random valuerandomNumberBound
 the bound (exclusive) of each random valuestreamSize
 the number of values to generate Returns:
 a stream of pseudorandom
double
values, each with the given origin (inclusive) and bound (exclusive)  See Also:
Random.doubles(long, double, double)

iterate
public static DoubleStreamEx iterate(double seed, DoubleUnaryOperator f)
Returns an infinite sequential orderedDoubleStreamEx
produced by iterative application of a functionf
to an initial elementseed
, producing a stream consisting ofseed
,f(seed)
,f(f(seed))
, etc.The first element (position
0
) in theDoubleStreamEx
will be the providedseed
. Forn > 0
, the element at positionn
, will be the result of applying the functionf
to the element at positionn  1
. Parameters:
seed
 the initial elementf
 a function to be applied to to the previous element to produce a new element Returns:
 A new sequential
DoubleStream
 See Also:
iterate(double, DoublePredicate, DoubleUnaryOperator)

iterate
public static DoubleStreamEx iterate(double seed, DoublePredicate predicate, DoubleUnaryOperator f)
Returns a sequential orderedDoubleStreamEx
produced by iterative application of a function to an initial element, conditioned on satisfying the supplied predicate. The stream terminates as soon as the predicate function returns false.DoubleStreamEx.iterate
should produce the same sequence of elements as produced by the corresponding forloop:for (double index=seed; predicate.test(index); index = f.apply(index)) { ... }
The resulting sequence may be empty if the predicate does not hold on the seed value. Otherwise the first element will be the supplied seed value, the next element (if present) will be the result of applying the function f to the seed value, and so on iteratively until the predicate indicates that the stream should terminate.
 Parameters:
seed
 the initial elementpredicate
 a predicate to apply to elements to determine when the stream must terminate.f
 a function to be applied to the previous element to produce a new element Returns:
 a new sequential
DoubleStreamEx
 Since:
 0.6.0
 See Also:
iterate(double, DoubleUnaryOperator)

generate
public static DoubleStreamEx generate(DoubleSupplier s)
Returns an infinite sequential unordered stream where each element is generated by the providedDoubleSupplier
. This is suitable for generating constant streams, streams of random elements, etc. Parameters:
s
 theDoubleSupplier
for generated elements Returns:
 a new infinite sequential unordered
DoubleStreamEx
 See Also:
DoubleStream.generate(DoubleSupplier)

produce
public static DoubleStreamEx produce(Predicate<DoubleConsumer> producer)
Return an ordered stream produced by consecutive calls of the supplied producer until it returns false.The producer function may call the passed consumer any number of times and return true if the producer should be called again or false otherwise. It's guaranteed that the producer will not be called anymore, once it returns false.
This method is particularly useful when producer changes the mutable object which should be left in known state after the full stream consumption. Note however that if a shortcircuiting operation is used, then the final state of the mutable object cannot be guaranteed.
 Parameters:
producer
 a predicate which calls the passed consumer to emit stream element(s) and returns true if it producer should be applied again. Returns:
 the new stream
 Since:
 0.6.0

constant
public static DoubleStreamEx constant(double value, long length)
Returns a sequential unorderedDoubleStreamEx
of given length which elements are equal to supplied value. Parameters:
value
 the constant valuelength
 the length of the stream Returns:
 a new
DoubleStreamEx
 Since:
 0.1.2

zip
public static DoubleStreamEx zip(double[] first, double[] second, DoubleBinaryOperator mapper)
Returns a sequentialDoubleStreamEx
containing the results of applying the given function to the corresponding pairs of values in given two arrays. Parameters:
first
 the first arraysecond
 the second arraymapper
 a noninterfering, stateless function to apply to each pair of the corresponding array elements. Returns:
 a new
DoubleStreamEx
 Throws:
IllegalArgumentException
 if length of the arrays differs. Since:
 0.2.1

spliterator
public SPLTR spliterator()
 Specified by:
spliterator
in interfaceBaseStream<T,S extends BaseStream<T,S>>

isParallel
public boolean isParallel()
 Specified by:
isParallel
in interfaceBaseStream<T,S extends BaseStream<T,S>>

close
public void close()
 Specified by:
close
in interfaceAutoCloseable
 Specified by:
close
in interfaceBaseStream<T,S extends BaseStream<T,S>>

