title: Java stream "forEach" but not consuming stream
body: <p>Sometimes it would be handy do "something" (e.g. print) with every element in a stream in between steps of processing the stream, e.g. for debugging. </p>
  
  <p>A simple example could look like this, unfortunately this does not work as <code>forEach</code> consumes the stream:</p>
  
  <pre><code>List&lt;String&gt; list = new ArrayList&lt;&gt;();
  list.add("one");
  list.add("two");
  list.add("three");
  list.add("four");
  
  List&lt;String&gt; filteredList = 
          list.stream()
          .filter(s -&gt; s.startsWith("t"))
          .forEach(System.out::println)
          .collect(Collectors.toList());
  </code></pre>
  
  <p>How can this be achieved?</p>