View Javadoc
1   package org.davidmoten.kool.internal.operators.stream;
2   
3   import org.davidmoten.kool.Stream;
4   import org.davidmoten.kool.StreamIterable;
5   import org.davidmoten.kool.StreamIterator;
6   import org.davidmoten.kool.function.Consumer;
7   
8   public final class DoOnNext<T> implements Stream<T> {
9   
10      private final Consumer<? super T> consumer;
11      private final StreamIterable<T> source;
12  
13      public DoOnNext(Consumer<? super T> consumer, StreamIterable<T> source) {
14          this.consumer = consumer;
15          this.source = source;
16      }
17  
18      @Override
19      public StreamIterator<T> iterator() {
20          return new StreamIterator<T>() {
21  
22              final StreamIterator<T> it = source.iteratorNullChecked();
23  
24              @Override
25              public boolean hasNext() {
26                  return it.hasNext();
27              }
28  
29              @Override
30              public T next() {
31                  T t = it.nextNullChecked();
32                  consumer.acceptUnchecked(t);
33                  return t;
34              }
35  
36              @Override
37              public void dispose() {
38                  it.dispose();
39              }
40          };
41      }
42  
43  }