title: Why not chain java.util.stream.Stream#forEach
body: <p>In java 8,<code>java.util.stream.Stream#forEach</code> consider as a replacement for traditional for-loop. But why not this is not chain function.Says it return void instead of <code>Stream&lt;T&gt;</code> it self. </p>
  
  <p>Like this</p>
  
  <pre><code>Arrays
      .stream(Girls.toArray())
      .forEach(Girls::getUp)
      .forEach(Girls::dressUp)
      .filter(/* Top 10 Girls */)
      .forEach(Gay.getMe()::gotGirl)
      .endFilter()// Not an API, but it means remove last filter
      .filter(/* Worst 10 Girls */)
      .forEach(Gay.get(0)::gotGirl)
  
  
  girls = Arrays
      .stream(Girls.toArray());
  girls.forEach(g-&gt;{g.getUp();g.dressUp()});
  girls.filter(/* Top 10 Girls */)
      .forEach(Gay.getMe()::gotGirl);
  girls.filter(/* Worst 10 Girls */)
      .forEach(Gay.get(0)::gotGirl);
  </code></pre>
  
  <p>The first is nice than second one.But the first one got worse performance.</p>
  
  <p>So, why <code>forEach</code> is not chainable ?</p>