double primitive specialization of
Stream.
The following example illustrates an aggregate operation using
Stream and DoubleStream, computing the sum of the weights of the
red widgets:
double sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToDouble(w -> w.getWeight())
.sum();
See the class documentation for Stream and the package documentation
for java.util.stream for additional
specification of streams, stream operations, stream pipelines, and
parallelism.
Stream, java.util.stream
| Modifier and Type | Class and Description |
|---|---|
| public static interface | DoubleStream.
A mutable builder for a |
| public static interface | DoubleStream.
Represents an operation that accepts a |
| Modifier and Type | Method and Description |
|---|---|
| public boolean | Returns: true if either all elements of the stream match the
provided predicate or the stream is empty, otherwise falsea non-interfering,
stateless
predicate to apply to elements of this stream predicate)Returns whether all elements of this stream match the provided predicate. |
| public boolean | Returns: true if any elements of the stream match the provided
predicate, otherwise falsea non-interfering,
stateless
predicate to apply to elements of this stream predicate)Returns whether any elements of this stream match the provided predicate. |
| public OptionalDouble | Returns: anOptionalDouble containing the average element of this
stream, or an empty optional if the stream is emptyReturns an |
| public Stream | Returns: aStream consistent of the elements of this stream,
each boxed to a DoubleReturns a |
| public static DoubleStream. | |
| public < the type of the mutable result container R> R | Returns: the result of the reductiona function that creates a new mutable result container.
For a parallel execution, this function may be called
multiple times and must return a fresh value each time. supplier, ObjDoubleConsumer<R> an associative,
non-interfering,
stateless
function that must fold an element into a result
container. accumulator, BiConsumer<R, R> an associative,
non-interfering,
stateless
function that accepts two partial result containers
and merges them, which must be compatible with the
accumulator function. The combiner function must fold
the elements from the second result container into the
first result container. combiner)Performs a mutable reduction operation on the elements of this stream. |
| public static DoubleStream | Returns: the concatenation of the two input streamsthe first stream a, DoubleStream the second stream b)Creates a lazily concatenated stream whose elements are all the elements of the first stream followed by all the elements of the second stream. |
| public long | |
| public DoubleStream | Returns: the result streamReturns a stream consisting of the distinct elements of this stream. |
| public default DoubleStream | Returns: the new streama non-interfering,
stateless
predicate to apply to elements to determine the longest
prefix of elements. predicate)Returns, if this stream is ordered, a stream consisting of the remaining elements of this stream after dropping the longest prefix of elements that match the given predicate. |
| public static DoubleStream | |
| public DoubleStream | Returns: the new streama non-interfering,
stateless
predicate to apply to each element to determine if it
should be included predicate)Returns a stream consisting of the elements of this stream that match the given predicate. |
| public OptionalDouble | Returns: anOptionalDouble describing some element of this stream,
or an empty OptionalDouble if the stream is emptyReturns an |
| public OptionalDouble | Returns: anOptionalDouble describing the first element of this
stream, or an empty OptionalDouble if the stream is emptyReturns an |
| public DoubleStream | Returns: the new streama non-interfering,
stateless
function to apply to each element which produces a
mapper)DoubleStream of new valuesReturns a stream 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. |
| public void | forEach(DoubleConsumer
a
non-interfering action to perform on the elements action)Performs an action for each element of this stream. |
| public void | forEachOrdered(DoubleConsumer
a
non-interfering action to perform on the elements action)Performs an action for each element of this stream, guaranteeing that each element is processed in encounter order for streams that have a defined encounter order. |
| public static DoubleStream | Returns: a new infinite sequential unorderedDoubleStreamthe s)DoubleSupplier for generated elementsReturns an infinite sequential unordered stream where each element is
generated by the provided |
| public static DoubleStream | Returns: a new sequentialDoubleStreamthe initial element seed, final DoubleUnaryOperator a function to be applied to the previous element to produce
a new element f)Returns an infinite sequential ordered The first element (position |
| public static DoubleStream | Returns: a new sequentialDoubleStreamthe initial element seed, DoublePredicate a predicate to apply to elements to determine when the
stream must terminate. hasNext, DoubleUnaryOperator a function to be applied to the previous element to produce
a new element next)Returns a sequential ordered |
| public PrimitiveIterator. | iterator()
Redeclares java. Returns an iterator for the elements of this stream. |
| public DoubleStream | Returns: the new streamthe number of elements the stream should be limited to maxSize)Returns a stream consisting of the elements of this stream, truncated
to be no longer than |
| public DoubleStream | Returns: the new streama non-interfering,
stateless
function to apply to each element mapper)Returns a stream consisting of the results of applying the given function to the elements of this stream. |
| public default DoubleStream | Returns: the new streama non-interfering,
stateless
function that generates replacement elements mapperReturns a stream consisting of the results of replacing each element of this stream with multiple elements, specifically zero or more elements. |
| public IntStream | Returns: the new streama non-interfering,
stateless
function to apply to each element mapper)Returns an |
| public LongStream | Returns: the new streama non-interfering,
stateless
function to apply to each element mapper)Returns a |
| public < the element type of the new stream U> Stream | Returns: the new streama non-interfering,
stateless
function to apply to each element mapper)Returns an object-valued |
| public OptionalDouble | Returns: anOptionalDouble containing the maximum element of this
stream, or an empty optional if the stream is emptyReturns an |
| public OptionalDouble | Returns: anOptionalDouble containing the minimum element of this
stream, or an empty optional if the stream is emptyReturns an |
| public boolean | Returns: true if either no elements of the stream match the
provided predicate or the stream is empty, otherwise falsea non-interfering,
stateless
predicate to apply to elements of this stream predicate)Returns whether no elements of this stream match the provided predicate. |
| public static DoubleStream | Returns: a singleton sequential streamthe single element t)Returns a sequential |
| public static DoubleStream | Returns: the new streamthe elements of the new stream values)Returns a sequential ordered stream whose elements are the specified values. |
| public DoubleStream | parallel()
Redeclares java. Returns an equivalent stream that is parallel. |
| public DoubleStream | Returns: the new streama
non-interfering action to perform on the elements as
they are consumed from the stream action)Returns a stream consisting of the elements of this stream, additionally performing the provided action on each element as elements are consumed from the resulting stream. |
| public double | Returns: the result of the reductionthe identity value for the accumulating function identity, DoubleBinaryOperator op)Performs a reduction on the elements of this stream, using the provided identity value and an associative accumulation function, and returns the reduced value. |
| public OptionalDouble | Returns: the result of the reductionPerforms a reduction on the
elements of this stream, using an
associative accumulation
function, and returns an |
| public DoubleStream | sequential()
Redeclares java. Returns an equivalent stream that is sequential. |
| public DoubleStream | Returns: the new streamthe number of leading elements to skip n)Returns a stream consisting of the remaining elements of this stream
after discarding the first |
| public DoubleStream | Returns: the result streamReturns a stream consisting of the elements of this stream in sorted order. |
| public Spliterator. | spliterator()
Redeclares java. Returns a spliterator for the elements of this stream. |
| public double | |
| public DoubleSummaryStatistics | Returns: aDoubleSummaryStatistics describing various summary data
about the elements of this streamReturns a |
| public default DoubleStream | Returns: the new streama non-interfering,
stateless
predicate to apply to elements to determine the longest
prefix of elements. predicate)Returns, if this stream is ordered, a stream consisting of the longest prefix of elements taken from this stream that match the given predicate. |
| public double[] | Returns: an array containing the elements of this streamReturns an array containing the elements of this stream. |
| allMatch | back to summary |
|---|---|
| public boolean allMatch(DoublePredicate predicate) Returns whether all elements of this stream match the provided predicate.
May not evaluate the predicate on all elements if not necessary for
determining the result. If the stream is empty then This is a short-circuiting terminal operation. API Note This method evaluates the universal quantification of the
predicate over the elements of the stream (for all x P(x)). If the
stream is empty, the quantification is said to be vacuously
satisfied and is always
| |
| anyMatch | back to summary |
|---|---|
| public boolean anyMatch(DoublePredicate predicate) Returns whether any elements of this stream match the provided
predicate. May not evaluate the predicate on all elements if not
necessary for determining the result. If the stream is empty then
This is a short-circuiting terminal operation. API Note This method evaluates the existential quantification of the predicate over the elements of the stream (for some x P(x)).
| |
| average | back to summary |
|---|---|
| public OptionalDouble average() Returns an The computed average can vary numerically and have the
special case behavior as computing the sum; see The average is a special case of a reduction. This is a terminal operation. API Note Elements sorted by increasing absolute magnitude tend to yield more accurate results.
| |
| boxed | back to summary |
|---|---|
| public Stream Returns a This is an intermediate operation. | |
| builder | back to summary |
|---|---|
| public static DoubleStream. Returns a builder for a
| |
| collect | back to summary |
|---|---|
| public <R> R collect(Supplier<R> supplier, ObjDoubleConsumer<R> accumulator, BiConsumer<R, R> combiner) Performs a mutable
reduction operation on the elements of this stream. A mutable
reduction is one in which the reduced value is a mutable result container,
such as an
Like This is a terminal operation.
| |
| concat | back to summary |
|---|---|
| public static DoubleStream concat(DoubleStream a, DoubleStream b) Creates a lazily concatenated stream whose elements are all the elements of the first stream followed by all the elements of the second 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. This method operates on the two input streams and binds each stream to its source. As a result subsequent modifications to an input stream source may not be reflected in the concatenated stream result. Implementation Note Use caution when constructing streams from repeated concatenation.
Accessing an element of a deeply concatenated stream can result in deep
call chains, or even API Note To preserve optimization opportunities this method binds each stream to its source and accepts only two streams as parameters. For example, the exact size of the concatenated stream source can be computed if the exact size of each input stream source is known. To concatenate more streams without binding, or without nested calls to this method, try creating a stream of streams and flat-mapping with the identity function, for example:
| |
| count | back to summary |
|---|---|
| public long count() Returns the count of elements in this stream. This is a special case of a reduction and is equivalent to:
This is a terminal operation. API Note An implementation may choose to not execute the stream pipeline (either sequentially or in parallel) if it is capable of computing the count directly from the stream source. In such cases no source elements will be traversed and no intermediate operations will be evaluated. Behavioral parameters with side-effects, which are strongly discouraged except for harmless cases such as debugging, may be affected. For example, consider the following stream:
The number of elements covered by the stream source is known and the
intermediate operation, peek, does not inject into or remove
elements from the stream (as may be the case for flatMap or
filter operations). Thus the count is 4 and there is no need to
execute the pipeline and, as a side-effect, print out the elements.
| |
| distinct | back to summary |
|---|---|
| public DoubleStream distinct() Returns a stream consisting of the distinct elements of this stream. The
elements are compared for equality according to
This is a stateful intermediate operation.
| |
| dropWhile | back to summary |
|---|---|
| public default DoubleStream dropWhile(DoublePredicate predicate) Returns, if this stream is ordered, a stream consisting of the remaining elements of this stream after dropping the longest prefix of elements that match the given predicate. Otherwise returns, if this stream is unordered, a stream consisting of the remaining elements of this stream after dropping a subset of elements that match the given predicate. If this stream is ordered then the longest prefix is a contiguous sequence of elements of this stream that match the given predicate. The first element of the sequence is the first element of this stream, and the element immediately following the last element of the sequence does not match the given predicate. If this stream is unordered, and some (but not all) elements of this stream match the given predicate, then the behavior of this operation is nondeterministic; it is free to drop any subset of matching elements (which includes the empty set). Independent of whether this stream is ordered or unordered if all elements of this stream match the given predicate then this operation drops all elements (the result is an empty stream), or if no elements of the stream match the given predicate then no elements are dropped (the result is the same as the input). This is a stateful intermediate operation. Implementation Specification The default implementation obtains the API Note While
| |
| empty | back to summary |
|---|---|
| public static DoubleStream empty() Returns an empty sequential
| |
| filter | back to summary |
|---|---|
| public DoubleStream filter(DoublePredicate predicate) Returns a stream consisting of the elements of this stream that match the given predicate. This is an intermediate operation.
| |
| findAny | back to summary |
|---|---|
| public OptionalDouble findAny() Returns an This is a short-circuiting 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 | back to summary |
|---|---|
| public OptionalDouble findFirst() Returns an This is a short-circuiting terminal operation.
| |
| flatMap | back to summary |
|---|---|
| public DoubleStream flatMap(DoubleFunction<? extends DoubleStream> mapper) Returns a stream 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
This is an intermediate operation.
| |
| forEach | back to summary |
|---|---|
| public void forEach(DoubleConsumer action) Performs an action for each element of this stream. This is a terminal operation. For parallel stream pipelines, this operation does not guarantee to respect the encounter order of the stream, as doing so would sacrifice the benefit of parallelism. For any given element, the action may be performed at whatever time and in whatever thread the library chooses. If the action accesses shared state, it is responsible for providing the required synchronization.
| |
| forEachOrdered | back to summary |
|---|---|
| public void forEachOrdered(DoubleConsumer action) Performs an action for each element of this stream, guaranteeing that each element is processed in encounter order for streams that have a defined encounter order. This is a terminal operation.
| |
| generate | back to summary |
|---|---|
| public static DoubleStream generate(DoubleSupplier s) Returns an infinite sequential unordered stream where each element is
generated by the provided
| |
| iterate | back to summary |
|---|---|
| public static DoubleStream iterate(final double seed, final DoubleUnaryOperator f) Returns an infinite sequential ordered The first element (position The action of applying
| |
| iterate | back to summary |
|---|---|
| public static DoubleStream iterate(double seed, DoublePredicate hasNext, DoubleUnaryOperator next) Returns a sequential ordered
The resulting sequence may be empty if the The action of applying the
| |
| iterator | back to summary |
|---|---|
| public PrimitiveIterator. Redeclares java. Doc from java. Returns an iterator for the elements of this stream. This is a terminal operation.
| |
| limit | back to summary |
|---|---|
| public DoubleStream limit(long maxSize) Returns a stream consisting of the elements of this stream, truncated
to be no longer than This is a short-circuiting stateful intermediate operation. API Note While
| |
| map | back to summary |
|---|---|
| public DoubleStream map(DoubleUnaryOperator mapper) Returns a stream consisting of the results of applying the given function to the elements of this stream. This is an intermediate operation.
| |
| mapMulti | back to summary |
|---|---|
| public default DoubleStream mapMulti(DoubleStream. Returns a stream consisting of the results of replacing each element of this stream with multiple elements, specifically zero or more elements. Replacement is performed by applying the provided mapping function to each element in conjunction with a consumer argument that accepts replacement elements. The mapping function calls the consumer zero or more times to provide the replacement elements. This is an intermediate operation. If the consumer argument is used outside the scope of its application to the mapping function, the results are undefined. Implementation Specification The default implementation invokes
| |
| mapToInt | back to summary |
|---|---|
| public IntStream mapToInt(DoubleToIntFunction mapper) Returns an This is an intermediate operation.
| |
| mapToLong | back to summary |
|---|---|
| public LongStream mapToLong(DoubleToLongFunction mapper) Returns a This is an intermediate operation.
| |
| mapToObj | back to summary |
|---|---|
| public <U> Stream Returns an object-valued This is an intermediate operation.
| |
| max | back to summary |
|---|---|
| public OptionalDouble max() Returns an
This is a terminal operation.
| |
| min | back to summary |
|---|---|
| public OptionalDouble min() Returns an
This is a terminal operation.
| |
| noneMatch | back to summary |
|---|---|
| public boolean noneMatch(DoublePredicate predicate) Returns whether no elements of this stream match the provided predicate.
May not evaluate the predicate on all elements if not necessary for
determining the result. If the stream is empty then This is a short-circuiting terminal operation. API Note This method evaluates the universal quantification of the
negated predicate over the elements of the stream (for all x ~P(x)). If
the stream is empty, the quantification is said to be vacuously satisfied
and is always
| |
| of | back to summary |
|---|---|
| public static DoubleStream of(double t) Returns a sequential
| |
| of | back to summary |
|---|---|
| public static DoubleStream of(double... values) Returns a sequential ordered stream whose elements are the specified values.
| |
| parallel | back to summary |
|---|---|
| public DoubleStream parallel() Redeclares java. Doc from java. Returns an equivalent stream that is parallel. May return itself, either because the stream was already parallel, or because the underlying stream state was modified to be parallel. This is an intermediate operation.
| |
| peek | back to summary |
|---|---|
| public DoubleStream peek(DoubleConsumer action) Returns a stream consisting of the elements of this stream, additionally performing the provided action on each element as elements are consumed from the resulting stream. This is an intermediate operation. For parallel stream pipelines, the action may be called at whatever time and in whatever thread the element is made available by the upstream operation. If the action modifies shared state, it is responsible for providing the required synchronization. API Note This method exists mainly to support debugging, where you want to see the elements as they flow past a certain point in a pipeline:
In cases where the stream implementation is able to optimize away the
production of some or all the elements (such as with short-circuiting
operations like
| |
| reduce | back to summary |
|---|---|
| public double reduce(double identity, DoubleBinaryOperator op) Performs a reduction on the elements of this stream, using the provided identity value and an associative accumulation function, and returns the reduced value. This is equivalent to:
but is not constrained to execute sequentially.
The This is a terminal operation. API Note Sum, min, max, and average are all special cases of reduction. Summing a stream of numbers can be expressed as:
or more compactly:
While this may seem a more roundabout way to perform an aggregation compared to simply mutating a running total in a loop, reduction operations parallelize more gracefully, without needing additional synchronization and with greatly reduced risk of data races.
| |
| reduce | back to summary |
|---|---|
| public OptionalDouble reduce(DoubleBinaryOperator op) Performs a reduction on the
elements of this stream, using an
associative accumulation
function, and returns an
but is not constrained to execute sequentially.
The This is a terminal operation.
| |
| sequential | back to summary |
|---|---|
| public DoubleStream sequential() Redeclares java. Doc from java. Returns an equivalent stream that is sequential. May return itself, either because the stream was already sequential, or because the underlying stream state was modified to be sequential. This is an intermediate operation.
| |
| skip | back to summary |
|---|---|
| public DoubleStream skip(long n) Returns a stream consisting of the remaining elements of this stream
after discarding the first This is a stateful intermediate operation. API Note While
| |
| sorted | back to summary |
|---|---|
| public DoubleStream sorted() Returns a stream consisting of the elements of this stream in sorted
order. The elements are compared for equality according to
This is a stateful intermediate operation.
| |
| spliterator | back to summary |
|---|---|
| public Spliterator. Redeclares java. Doc from java. Returns a spliterator for the elements of this stream. This is a terminal operation.
| |
| sum | back to summary |
|---|---|
| public double sum() Returns the sum of elements in this stream. Summation is a special case of a reduction. If floating-point summation were exact, this method would be equivalent to:
However, since floating-point summation is not exact, the above
code is not necessarily equivalent to the summation computation
done by this method.
The value of a floating-point sum is a function both
of the input values as well as the order of addition
operations. The order of addition operations of this method is
intentionally not defined to allow for implementation
flexibility to improve the speed and accuracy of the computed
result.
In particular, this method may be implemented using compensated
summation or other technique to reduce the error bound in the
numerical sum compared to a simple summation of Various conditions can result in a non-finite sum being computed. This can occur even if the all the elements being summed are finite. If any element is non-finite, the sum will be non-finite:
This is a terminal operation. API Note Elements sorted by increasing absolute magnitude tend to yield more accurate results.
| |
| summaryStatistics | back to summary |
|---|---|
| public DoubleSummaryStatistics summaryStatistics() Returns a This is a terminal operation.
| |
| takeWhile | back to summary |
|---|---|
| public default DoubleStream takeWhile(DoublePredicate predicate) Returns, if this stream is ordered, a stream consisting of the longest prefix of elements taken from this stream that match the given predicate. Otherwise returns, if this stream is unordered, a stream consisting of a subset of elements taken from this stream that match the given predicate. If this stream is ordered then the longest prefix is a contiguous sequence of elements of this stream that match the given predicate. The first element of the sequence is the first element of this stream, and the element immediately following the last element of the sequence does not match the given predicate. If this stream is unordered, and some (but not all) elements of this stream match the given predicate, then the behavior of this operation is nondeterministic; it is free to take any subset of matching elements (which includes the empty set). Independent of whether this stream is ordered or unordered if all elements of this stream match the given predicate then this operation takes all elements (the result is the same as the input), or if no elements of the stream match the given predicate then no elements are taken (the result is an empty stream). This is a short-circuiting stateful intermediate operation. Implementation Specification The default implementation obtains the API Note While
| |
| toArray | back to summary |
|---|---|
| public double[] toArray() Returns an array containing the elements of this stream. This is a terminal operation.
| |
DoubleStream.
A stream builder has a lifecycle, which starts in a building
phase, during which elements can be added, and then transitions to a built
phase, after which elements may not be added. The built phase
begins when the build() method is called, which creates an
ordered stream whose elements are the elements that were added to the
stream builder, in the order they were added.
DoubleStream#builder()
| Modifier and Type | Method and Description |
|---|---|
| public void | accept(double t)
Redeclares java. Adds an element to the stream being built. |
| public default DoubleStream. | |
| public DoubleStream |
| accept | back to summary |
|---|---|
| public void accept(double t) Redeclares java. Adds an element to the stream being built.
| |
| add | back to summary |
|---|---|
| public default DoubleStream. Adds an element to the stream being built. Implementation Specification The default implementation behaves as if:
| |
| build | back to summary |
|---|---|
| public DoubleStream build() Builds the stream, transitioning this builder to the built state.
An
| |
double-valued argument
and a DoubleConsumer, and returns no result. This functional interface is
used by DoubleStream.mapMulti
to replace a double value with zero or more double values.
This is a functional interface
whose functional method is accept(double, DoubleConsumer).
DoubleStream#mapMulti(DoubleMapMultiConsumer)
| Modifier and Type | Method and Description |
|---|---|
| public void | accept(double
the double value coming from upstream value, DoubleConsumer a dc)DoubleConsumer accepting the mapped valuesReplaces the given |
| accept | back to summary |
|---|---|
| public void accept(double value, DoubleConsumer dc) Replaces the given
| |