Stream generators (original) (raw)
Paul Sandoz paul.sandoz at oracle.com
Fri Nov 30 11:13:46 PST 2012
- Previous message: Stream generators
- Next message: Stream generators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Nov 30, 2012, at 6:41 PM, Joe Bowbeer <joe.bowbeer at gmail.com> wrote:
My first impression is that there are a lot. Whether they carry their weight depends on how difficult it is to implement these directly.
The following:
<T> Stream<T> repeat(T t)
<T> Stream<T> repeat(int n, T t)
<T> Stream<T> repeatedly(Supplier<T> f)
all defer to:
public static<T> Stream<T> repeatedly(final int n, final Supplier<T> f) {
Objects.requireNonNull(f);
if (n < 0) {
InfiniteIterator<T> iterator = () -> f.get();
return stream(new StreamSource.ForIterator<>(iterator), StreamOpFlag.IS_ORDERED);
}
else {
final Iterator<T> repeatedly = new Iterator<T>() {
int c = n;
@Override
public boolean hasNext() {
return c > 0;
}
@Override
public T next() {
if (!hasNext()) {
throw new NoSuchElementException();
}
c--;
return f.get();
}
};
return stream(new StreamSource.ForIterator<>(repeatedly), StreamOpFlag.IS_ORDERED);
}
}
Paul.
- Previous message: Stream generators
- Next message: Stream generators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the lambda-libs-spec-observers mailing list