T - the type of the elements this emitter emits@FunctionalInterface public static interface StreamEx.Emitter<T>
Using this interface it's possible to create custom sources which cannot
be easily expressed using StreamEx.iterate(Object, UnaryOperator)
or StreamEx.generate(Supplier). For example, the following method
generates a Collatz sequence starting from given number:
public static Emitter<Integer> collatz(int start) {
return action -> {
action.accept(start);
return start == 1 ? null : collatz(start % 2 == 0 ? start / 2 : start * 3 + 1);
};
}
Now you can use collatz(17).stream() to get the stream of Collatz
numbers.
| Modifier and Type | Method and Description |
|---|---|
StreamEx.Emitter<T> |
next(Consumer<? super T> action)
Calls the supplied consumer zero or more times to emit some elements,
then returns the next emitter which will emit more, or null if
nothing more to emit.
|
default Spliterator<T> |
spliterator()
Returns the spliterator which covers all the elements emitted by this
emitter.
|
default StreamEx<T> |
stream()
Returns the stream which covers all the elements emitted by this
emitter.
|
StreamEx.Emitter<T> next(Consumer<? super T> action)
Normally one element is emitted during the next() method
call. However, it's not restricted: you may emit as many elements as
you want, though in some cases if many elements were emitted they
might be buffered consuming additional memory.
It's allowed not to emit anything (don't call the consumer). However if you do this and return new emitter which also does not emit anything, you will end up in endless loop.
action - consumer to be called to emit elementsdefault Spliterator<T> spliterator()
Copyright © 2017. All rights reserved.