T
- the type of the stream elementspublic class Stream<T>
extends java.lang.Object
Modifier and Type | Method and Description |
---|---|
boolean |
allMatch(Predicate<? super T> predicate)
Tests whether all elements match the given predicate.
|
boolean |
anyMatch(Predicate<? super T> predicate)
Tests whether any elements match the given predicate.
|
<K> Stream<java.util.List<T>> |
chunkBy(Function<? super T,? extends K> classifier)
Partitions
Stream into List s according to the given classifier function. |
<R,A> R |
collect(Collector<? super T,A,R> collector)
Collects elements with
collector that encapsulates supplier, accumulator and combiner functions. |
<R> R |
collect(Supplier<R> supplier,
BiConsumer<R,? super T> accumulator)
Collects elements to
supplier provided container by applying the given accumulation function. |
static <T> Stream<T> |
concat(Stream<? extends T> stream1,
Stream<? extends T> stream2)
Concatenates two streams.
|
long |
count()
Counts the number of elements in this stream.
|
<R> R |
custom(Function<Stream<T>,R> function)
Applies custom operator on stream.
|
Stream<T> |
distinct()
Returns
Stream with distinct elements (as determinated by hashCode and equals methods). |
Stream<T> |
dropWhile(Predicate<? super T> predicate)
Drops elements while the predicate is true and returns the rest.
|
static <T> Stream<T> |
empty()
Returns an empty stream.
|
Stream<T> |
filter(Predicate<? super T> predicate)
Returns
Stream with elements that satisfy the given predicate. |
Stream<T> |
filterNot(Predicate<? super T> predicate)
Returns
Stream with elements that does not satisfy the given predicate. |
Optional<T> |
findFirst()
Returns the first element wrapped by
Optional class. |
Optional<T> |
findSingle()
Returns the single element wrapped by
Optional class. |
<R> Stream<R> |
flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
Generates
Stream by concatenating elements that obtained by applying the given function. |
IntStream |
flatMapToInt(Function<? super T,? extends IntStream> mapper)
Generates
IntStream by concatenating elements that obtained by applying the given function. |
void |
forEach(Consumer<? super T> action)
Performs the given action to each element.
|
static <T> Stream<T> |
generate(Supplier<T> supplier)
Creates a
Stream by elements that generated by Supplier . |
java.util.Iterator<? extends T> |
getIterator()
Deprecated.
As of release 1.1.1, replaced by
iterator() |
<K> Stream<java.util.Map.Entry<K,java.util.List<T>>> |
groupBy(Function<? super T,? extends K> classifier)
Partitions
Stream into Map entries according to the given classifier function. |
Stream<IntPair<T>> |
indexed()
Returns
Stream with indexed elements. |
Stream<IntPair<T>> |
indexed(int from,
int step)
Returns
Stream with indexed elements. |
static <T> Stream<T> |
iterate(T seed,
UnaryOperator<T> op)
Creates a
Stream by iterative application UnaryOperator function
to an initial element seed . |
java.util.Iterator<? extends T> |
iterator()
Returns internal stream iterator.
|
Stream<T> |
limit(long maxSize)
Returns
Stream with first maxSize elements. |
<R> Stream<R> |
map(Function<? super T,? extends R> mapper)
Returns
Stream with elements that obtained by applying the given function. |
IntStream |
mapToInt(ToIntFunction<? super T> mapper)
Returns
IntStream with elements that obtained by applying the given function. |
Optional<T> |
max(java.util.Comparator<? super T> comparator)
Finds the maximum element according to the given comparator.
|
Optional<T> |
min(java.util.Comparator<? super T> comparator)
Finds the minimum element according to the given comparator.
|
boolean |
noneMatch(Predicate<? super T> predicate)
Tests whether no elements match the given predicate.
|
static <T> Stream<T> |
of(java.lang.Iterable<? extends T> iterable)
Creates a
Stream from any class that implements Iterable interface. |
static <T> Stream<T> |
of(java.util.Iterator<? extends T> iterator)
Creates a
Stream from any class that implements Iterator interface. |
static <K,V> Stream<java.util.Map.Entry<K,V>> |
of(java.util.Map<K,V> map)
Creates a
Stream from Map entries. |
static <T> Stream<T> |
of(T... elements)
Creates a
Stream from the specified values. |
static Stream<java.lang.Integer> |
ofRange(int from,
int to)
Deprecated.
As of release 1.0.7, replaced by
range(int, int) |
static Stream<java.lang.Long> |
ofRange(long from,
long to)
Deprecated.
As of release 1.0.7, replaced by
range(long, long) |
static Stream<java.lang.Integer> |
ofRangeClosed(int from,
int to)
Deprecated.
As of release 1.0.7, replaced by
rangeClosed(int, int) |
static Stream<java.lang.Long> |
ofRangeClosed(long from,
long to)
Deprecated.
As of release 1.0.7, replaced by
rangeClosed(long, long) |
Stream<T> |
peek(Consumer<? super T> action)
Perform provided action to each elements.
|
static Stream<java.lang.Integer> |
range(int from,
int to)
Creates a
Stream<Integer> from not closed range
(from from inclusive to to exclusive and incremental step 1 ). |
static Stream<java.lang.Long> |
range(long from,
long to)
Creates a
Stream<Long> from not closed range
(from from inclusive to to exclusive and incremental step 1 ). |
static Stream<java.lang.Integer> |
rangeClosed(int from,
int to)
Creates a
Stream<Integer> from closed range
(from from inclusive to to inclusive and incremental step 1 ). |
static Stream<java.lang.Long> |
rangeClosed(long from,
long to)
Creates a
Stream<Long> from closed range
(from from inclusive to to inclusive and incremental step 1 ). |
Optional<T> |
reduce(BiFunction<T,T,T> accumulator)
Reduces the elements using provided associative accumulation function.
|
<R> R |
reduce(R identity,
BiFunction<? super R,? super T,? extends R> accumulator)
Reduces the elements using provided identity value and the associative accumulation function.
|
Stream<T> |
sample(int stepWidth)
Samples the
Stream by emitting every n-th element. |
<TT> Stream<TT> |
select(java.lang.Class<TT> clazz)
Returns a stream consisting of the elements of this stream which are
instances of given class.
|
T |
single()
Returns the single element of stream.
|
Stream<T> |
skip(long n)
Skips first
n elements and returns Stream with remaining elements. |
Stream<java.util.List<T>> |
slidingWindow(int windowSize)
Partitions
Stream into List s of fixed size by sliding over the elements of the stream. |
Stream<java.util.List<T>> |
slidingWindow(int windowSize,
int stepWidth)
Partitions
Stream into List s of fixed size by sliding over the elements of the stream. |
<R extends java.lang.Comparable<? super R>> |
sortBy(Function<? super T,? extends R> f)
Returns
Stream with sorted elements (as determinated by Comparable interface). |
Stream<T> |
sorted()
Returns
Stream with sorted elements (as determinated by Comparable interface). |
Stream<T> |
sorted(java.util.Comparator<? super T> comparator)
Returns
Stream with sorted elements (as determinated by provided Comparator ). |
Stream<T> |
takeWhile(Predicate<? super T> predicate)
Takes elements while the predicate is true.
|
java.lang.Object[] |
toArray()
Collects elements to an array.
|
<R> R[] |
toArray(IntFunction<R[]> generator)
Collects elements to an array, the
generator constructor of provided. |
static <F,S,R> Stream<R> |
zip(java.util.Iterator<? extends F> iterator1,
java.util.Iterator<? extends S> iterator2,
BiFunction<? super F,? super S,? extends R> combiner)
Combines two iterators to a stream by applying specified combiner function to each element at same position.
|
static <F,S,R> Stream<R> |
zip(Stream<? extends F> stream1,
Stream<? extends S> stream2,
BiFunction<? super F,? super S,? extends R> combiner)
Combines two streams by applying specified combiner function to each element at same position.
|
public static <T> Stream<T> empty()
T
- the type of the stream elementspublic static <K,V> Stream<java.util.Map.Entry<K,V>> of(java.util.Map<K,V> map)
Stream
from Map
entries.K
- the type of map keysV
- the type of map valuesmap
- the map with elements to be passed to streamjava.lang.NullPointerException
- if map
is nullpublic static <T> Stream<T> of(java.util.Iterator<? extends T> iterator)
Stream
from any class that implements Iterator
interface.T
- the type of the stream elementsiterator
- the iterator with elements to be passed to streamjava.lang.NullPointerException
- if iterator
is nullpublic static <T> Stream<T> of(java.lang.Iterable<? extends T> iterable)
Stream
from any class that implements Iterable
interface.T
- the type of the stream elementsiterable
- the Iterable
with elements to be passed to streamjava.lang.NullPointerException
- if iterable
is nullpublic static <T> Stream<T> of(T... elements)
Stream
from the specified values.T
- the type of the stream elementselements
- the elements to be passed to streamjava.lang.NullPointerException
- if elements
is nullpublic static Stream<java.lang.Integer> range(int from, int to)
Stream<Integer>
from not closed range
(from from
inclusive to to
exclusive and incremental step 1
).from
- the initial value (inclusive)to
- the upper bound (exclusive)IntStream.range(int, int)
@Deprecated public static Stream<java.lang.Integer> ofRange(int from, int to)
range(int, int)
Stream<Integer>
from not closed range
(from from
inclusive to to
exclusive and incremental step 1
).from
- the initial value (inclusive)to
- the upper bound (exclusive)public static Stream<java.lang.Long> range(long from, long to)
Stream<Long>
from not closed range
(from from
inclusive to to
exclusive and incremental step 1
).from
- the initial value (inclusive)to
- the upper bound (exclusive)@Deprecated public static Stream<java.lang.Long> ofRange(long from, long to)
range(long, long)
Stream<Long>
from not closed range
(from from
inclusive to to
exclusive and incremental step 1
).from
- the initial value (inclusive)to
- the upper bound (exclusive)public static Stream<java.lang.Integer> rangeClosed(int from, int to)
Stream<Integer>
from closed range
(from from
inclusive to to
inclusive and incremental step 1
).from
- the initial value (inclusive)to
- the upper bound (inclusive)IntStream.rangeClosed(int, int)
@Deprecated public static Stream<java.lang.Integer> ofRangeClosed(int from, int to)
rangeClosed(int, int)
Stream<Integer>
from closed range
(from from
inclusive to to
inclusive and incremental step 1
).from
- the initial value (inclusive)to
- the upper bound (inclusive)public static Stream<java.lang.Long> rangeClosed(long from, long to)
Stream<Long>
from closed range
(from from
inclusive to to
inclusive and incremental step 1
).from
- the initial value (inclusive)to
- the upper bound (inclusive)@Deprecated public static Stream<java.lang.Long> ofRangeClosed(long from, long to)
rangeClosed(long, long)
Stream<Long>
from closed range
(from from
inclusive to to
inclusive and incremental step 1
).from
- the initial value (inclusive)to
- the upper bound (inclusive)public static <T> Stream<T> generate(Supplier<T> supplier)
Stream
by elements that generated by Supplier
.T
- the type of the stream elementssupplier
- the Supplier
of generated elementsjava.lang.NullPointerException
- if supplier
is nullpublic static <T> Stream<T> iterate(T seed, UnaryOperator<T> op)
Stream
by iterative application UnaryOperator
function
to an initial element seed
. Produces Stream
consisting of
seed
, op(seed)
, op(op(seed))
, etc.
Example:
seed: 1 op: (a) -> a + 5 result: [1, 6, 11, 16, ...]
T
- the type of the stream elementsseed
- the initial valueop
- operator to produce new element by previous onejava.lang.NullPointerException
- if op
is nullpublic static <T> Stream<T> concat(Stream<? extends T> stream1, Stream<? extends T> stream2)
Example:
stream 1: [1, 2, 3, 4] stream 2: [5, 6] result: [1, 2, 3, 4, 5, 6]
T
- The type of stream elementsstream1
- the first streamstream2
- the second streamjava.lang.NullPointerException
- if stream1
or stream2
is nullpublic static <F,S,R> Stream<R> zip(Stream<? extends F> stream1, Stream<? extends S> stream2, BiFunction<? super F,? super S,? extends R> combiner)
Example:
combiner: (a, b) -> a + b stream 1: [1, 2, 3, 4] stream 2: [5, 6, 7, 8] result: [6, 8, 10, 12]
F
- the type of first stream elementsS
- the type of second stream elementsR
- the type of elements in resulting streamstream1
- the first streamstream2
- the second streamcombiner
- the combiner function used to apply to each elementjava.lang.NullPointerException
- if stream1
or stream2
is nullpublic static <F,S,R> Stream<R> zip(java.util.Iterator<? extends F> iterator1, java.util.Iterator<? extends S> iterator2, BiFunction<? super F,? super S,? extends R> combiner)
Example:
combiner: (a, b) -> a + b stream 1: [1, 2, 3, 4] stream 2: [5, 6, 7, 8] result: [6, 8, 10, 12]
F
- the type of first iterator elementsS
- the type of second iterator elementsR
- the type of elements in resulting streamiterator1
- the first iteratoriterator2
- the second iteratorcombiner
- the combiner function used to apply to each elementjava.lang.NullPointerException
- if iterator1
or iterator2
is null@Deprecated public java.util.Iterator<? extends T> getIterator()
iterator()
public java.util.Iterator<? extends T> iterator()
public <R> R custom(Function<Stream<T>,R> function)
Stream
for intermediate operations,
or any value for terminal operation.
Operator examples:
// Intermediate operator
public class Reverse<T> implements Function<Stream<T>, Stream<T>> {
@Override
public Stream<T> apply(Stream<T> stream) {
final Iterator<? extends T> iterator = stream.iterator();
final ArrayDeque<T> deque = new ArrayDeque<T>();
while (iterator.hasNext()) {
deque.addFirst(iterator.next());
}
return Stream.of(deque.iterator());
}
}
// Intermediate operator based on existing stream operators
public class SkipAndLimit<T> implements UnaryOperator<Stream<T>> {
private final int skip, limit;
public SkipAndLimit(int skip, int limit) {
this.skip = skip;
this.limit = limit;
}
@Override
public Stream<T> apply(Stream<T> stream) {
return stream.skip(skip).limit(limit);
}
}
// Terminal operator
public class Sum implements Function<Stream<Integer>, Integer> {
@Override
public Integer apply(Stream<Integer> stream) {
return stream.reduce(0, new BinaryOperator<Integer>() {
@Override
public Integer apply(Integer value1, Integer value2) {
return value1 + value2;
}
});
}
}
R
- the type of the resultfunction
- a transforming functionjava.lang.NullPointerException
- if function
is nullpublic Stream<T> filter(Predicate<? super T> predicate)
Stream
with elements that satisfy the given predicate.
This is an intermediate operation.
Example:
predicate: (a) -> a > 2 stream: [1, 2, 3, 4, -8, 0, 11] result: [3, 4, 11]
predicate
- the predicate used to filter elementspublic Stream<T> filterNot(Predicate<? super T> predicate)
Stream
with elements that does not satisfy the given predicate.
This is an intermediate operation.
predicate
- the predicate used to filter elementspublic <TT> Stream<TT> select(java.lang.Class<TT> clazz)
This is an intermediate operation.
TT
- a type of instances to select.clazz
- a class which instances should be selectedpublic <R> Stream<R> map(Function<? super T,? extends R> mapper)
Stream
with elements that obtained by applying the given function.
This is an intermediate operation.
Example:
mapper: (a) -> a + 5 stream: [1, 2, 3, 4] result: [6, 7, 8, 9]
R
- the type of elements in resulting streammapper
- the mapper function used to apply to each elementpublic IntStream mapToInt(ToIntFunction<? super T> mapper)
IntStream
with elements that obtained by applying the given function.
This is an intermediate operation.
mapper
- the mapper function used to apply to each elementIntStream
map(com.annimon.stream.function.Function)
public <R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
Stream
by concatenating elements that obtained by applying the given function.
This is an intermediate operation.
Example:
mapper: (a) -> [a, a + 5] stream: [1, 2, 3, 4] result: [1, 6, 2, 7, 3, 8, 4, 9]
R
- the type of elements in resulting streammapper
- the mapper function used to apply to each elementpublic IntStream flatMapToInt(Function<? super T,? extends IntStream> mapper)
IntStream
by concatenating elements that obtained by applying the given function.
This is an intermediate operation.
mapper
- the mapper function used to apply to each elementIntStream
flatMap(com.annimon.stream.function.Function)
public Stream<IntPair<T>> indexed()
Stream
with indexed elements.
Indexing starts from 0 with step 1.
This is an intermediate operation.
Example:
stream: ["a", "b", "c"] result: [(0, "a"), (1, "b"), (2, "c")]
IntPair
streampublic Stream<IntPair<T>> indexed(int from, int step)
Stream
with indexed elements.
This is an intermediate operation.
Example:
from: 5, step: 10 stream: ["a", "b", "c"] result: [(5, "a"), (15, "b"), (25, "c")]
from
- the initial value (inclusive)step
- the stepIntPair
streampublic Stream<T> distinct()
Stream
with distinct elements (as determinated by hashCode
and equals
methods).
This is a stateful intermediate operation.
Example:
stream: [1, 4, 2, 3, 3, 4, 1] result: [1, 4, 2, 3]
public Stream<T> sorted()
Stream
with sorted elements (as determinated by Comparable
interface).
This is a stateful intermediate operation.
If the elements of this stream are not Comparable
,
a java.lang.ClassCastException
may be thrown when the terminal operation is executed.
Example:
stream: [3, 4, 1, 2] result: [1, 2, 3, 4]
public Stream<T> sorted(java.util.Comparator<? super T> comparator)
Stream
with sorted elements (as determinated by provided Comparator
).
This is a stateful intermediate operation.
Example:
comparator: (a, b) -> -a.compareTo(b) stream: [1, 2, 3, 4] result: [4, 3, 2, 1]
comparator
- the Comparator
to compare elementspublic <R extends java.lang.Comparable<? super R>> Stream<T> sortBy(Function<? super T,? extends R> f)
Stream
with sorted elements (as determinated by Comparable
interface).
Each element transformed by given function f
before comparing.
This is a stateful intermediate operation.
Example:
f: (a) -> -a stream: [1, 2, 3, 4] result: [4, 3, 2, 1]
R
- the type of the result of transforming functionf
- the transformation functionpublic <K> Stream<java.util.Map.Entry<K,java.util.List<T>>> groupBy(Function<? super T,? extends K> classifier)
Stream
into Map
entries according to the given classifier function.
This is a stateful intermediate operation.
Example:
classifier: (str) -> str.length() stream: ["a", "bc", "d", "ef", "ghij"] result: [{1: ["a", "d"]}, {2: ["bc", "ef"]}, {4: ["ghij"]}]
K
- the type of the keys, which are result of the classifier functionclassifier
- the classifier functionpublic <K> Stream<java.util.List<T>> chunkBy(Function<? super T,? extends K> classifier)
Stream
into List
s according to the given classifier function. In contrast
to groupBy(Function)
, this method assumes that the elements of the stream are sorted.
Because of this assumption, it does not need to first collect all elements and then partition them.
Instead, it can emit a List
of elements when it reaches the first element that does not
belong to the same chunk as the previous elements.
This is an intermediate operation.
Example:
classifier: (a) -> a % 5 == 0 stream: [1, 2, 5, 6, 7, 9, 10, 12, 14] result: [[1, 2], [5], [6, 7, 9], [10], [12, 14]]
K
- the type of the keys, which are the result of the classifier functionclassifier
- the classifier functionpublic Stream<T> sample(int stepWidth)
Stream
by emitting every n-th element.
This is an intermediate operation.
Example:
stepWidth: 3 stream: [1, 2, 3, 4, 5, 6, 7, 8] result: [1, 4, 7]
stepWidth
- step widthjava.lang.IllegalArgumentException
- if stepWidth
is zero or negativepublic Stream<java.util.List<T>> slidingWindow(int windowSize)
Stream
into List
s of fixed size by sliding over the elements of the stream.
It starts with the first element and in each iteration moves by 1. This method yields the same results
as calling slidingWindow(int, int)
with a stepWidth
of 1.
This is an intermediate operation.
Example:
windowSize: 3 stream: [1, 2, 3, 4, 5] result: [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
windowSize
- number of elements that will be emitted together in a listslidingWindow(int, int)
public Stream<java.util.List<T>> slidingWindow(int windowSize, int stepWidth)
Stream
into List
s of fixed size by sliding over the elements of the stream.
It starts with the first element and in each iteration moves by the given step width. This method
allows, for example, to partition the elements into batches of windowSize
elements (by using a
step width equal to the specified window size) or to sample every n-th element (by using a window size
of 1 and a step width of n).
This is an intermediate operation.
Example:
windowSize: 3, stepWidth: 3 stream: [1, 1, 1, 2, 2, 2, 3, 3, 3] result: [[1, 1, 1], [2, 2, 2] [3, 3, 3]] windowSize: 2, stepWidth: 3 stream: [1, 2, 3, 1, 2, 3, 1, 2, 3] result: [[1, 2], [1, 2], [1, 2]] windowSize: 3, stepWidth: 1 stream: [1, 2, 3, 4, 5, 6] result: [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]]
windowSize
- number of elements that will be emitted together in a liststepWidth
- step widthjava.lang.IllegalArgumentException
- if windowSize
is zero or negativejava.lang.IllegalArgumentException
- if stepWidth
is zero or negativepublic Stream<T> peek(Consumer<? super T> action)
This is an intermediate operation.
action
- the action to be performed on each elementpublic Stream<T> takeWhile(Predicate<? super T> predicate)
This is an intermediate operation.
Example:
predicate: (a) -> a < 3 stream: [1, 2, 3, 4, 1, 2, 3, 4] result: [1, 2]
predicate
- the predicate used to take elementspublic Stream<T> dropWhile(Predicate<? super T> predicate)
This is an intermediate operation.
Example:
predicate: (a) -> a < 3 stream: [1, 2, 3, 4, 1, 2, 3, 4] result: [3, 4, 1, 2, 3, 4]
predicate
- the predicate used to drop elementspublic Stream<T> limit(long maxSize)
Stream
with first maxSize
elements.
This is a short-circuiting stateful intermediate operation.
Example:
maxSize: 3 stream: [1, 2, 3, 4, 5] result: [1, 2, 3] maxSize: 10 stream: [1, 2] result: [1, 2]
maxSize
- the number of elements to limitjava.lang.IllegalArgumentException
- if maxSize
is negativepublic Stream<T> skip(long n)
n
elements and returns Stream
with remaining elements.
This is a stateful intermediate operation.
Example:
n: 3 stream: [1, 2, 3, 4, 5] result: [4, 5] n: 10 stream: [1, 2] result: []
n
- the number of elements to skipjava.lang.IllegalArgumentException
- if n
is negativepublic void forEach(Consumer<? super T> action)
This is a terminal operation.
action
- the action to be performed on each elementpublic <R> R reduce(R identity, BiFunction<? super R,? super T,? extends R> accumulator)
This is a terminal operation.
Example:
identity: 0 accumulator: (a, b) -> a + b stream: [1, 2, 3, 4, 5] result: 15
R
- the type of the resultidentity
- the initial valueaccumulator
- the accumulation functionpublic Optional<T> reduce(BiFunction<T,T,T> accumulator)
This is a terminal operation.
accumulator
- the accumulation functionpublic java.lang.Object[] toArray()
This is a terminal operation.
toArray(com.annimon.stream.function.IntFunction)
public <R> R[] toArray(IntFunction<R[]> generator)
generator
constructor of provided.
This is a terminal operation.
R
- the type of the resultgenerator
- the array constructor reference that accommodates future array of assigned sizepublic <R> R collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator)
supplier
provided container by applying the given accumulation function.
This is a terminal operation.
R
- the type of the resultsupplier
- the supplier function that provides containeraccumulator
- the accumulation functioncollect(com.annimon.stream.Collector)
public <R,A> R collect(Collector<? super T,A,R> collector)
collector
that encapsulates supplier, accumulator and combiner functions.
This is a terminal operation.
R
- the type of resultA
- the intermediate used by Collector
collector
- the Collector
collect(com.annimon.stream.function.Supplier, com.annimon.stream.function.BiConsumer)
public Optional<T> min(java.util.Comparator<? super T> comparator)
This is a terminal operation.
Example:
comparator: (a, b) -> a.compareTo(b) stream: [1, 2, 3, 4, 5] result: 1
comparator
- the Comparator
to compare elementspublic Optional<T> max(java.util.Comparator<? super T> comparator)
This is a terminal operation.
Example:
comparator: (a, b) -> a.compareTo(b) stream: [1, 2, 3, 4, 5] result: 5
comparator
- the Comparator
to compare elementspublic long count()
This is a terminal operation.
public boolean anyMatch(Predicate<? super T> predicate)
This is a short-circuiting terminal operation.
Example:
predicate: (a) -> a == 5 stream: [1, 2, 3, 4, 5] result: true predicate: (a) -> a == 5 stream: [5, 5, 5] result: true
predicate
- the predicate used to match elementstrue
if any elements match the given predicate, otherwise false
public boolean allMatch(Predicate<? super T> predicate)
This is a short-circuiting terminal operation.
Example:
predicate: (a) -> a == 5 stream: [1, 2, 3, 4, 5] result: false predicate: (a) -> a == 5 stream: [5, 5, 5] result: true
predicate
- the predicate used to match elementstrue
if all elements match the given predicate, otherwise false
public boolean noneMatch(Predicate<? super T> predicate)
This is a short-circuiting terminal operation.
Example:
predicate: (a) -> a == 5 stream: [1, 2, 3, 4, 5] result: false predicate: (a) -> a == 5 stream: [1, 2, 3] result: true
predicate
- the predicate used to match elementstrue
if no elements match the given predicate, otherwise false
public Optional<T> findFirst()
Optional
class.
If stream is empty, returns Optional.empty()
.
This is a short-circuiting terminal operation.
Optional
with first element or Optional.empty()
if stream is emptypublic T single()
NoSuchElementException
.
If stream contains more than one element, throws IllegalStateException
.
This is a short-circuiting terminal operation.
Example:
stream: [] result: NoSuchElementException stream: [1] result: 1 stream: [1, 2, 3] result: IllegalStateException
java.util.NoSuchElementException
- if stream is emptyjava.lang.IllegalStateException
- if stream contains more than one elementpublic Optional<T> findSingle()
Optional
class.
If stream is empty, returns Optional.empty()
.
If stream contains more than one element, throws IllegalStateException
.
This is a short-circuiting terminal operation.
Example:
stream: [] result: Optional.empty() stream: [1] result: Optional.of(1) stream: [1, 2, 3] result: IllegalStateException
Optional
with single element or Optional.empty()
if stream is emptyjava.lang.IllegalStateException
- if stream contains more than one element