title: java-8 filter a list without creating a new list
body: <p>I'm looking for the cleanest way to filter a list in Java-8, with a simple lambda <code>Predicate</code>, <strong>without creating a new list</strong>.</p>
  
  <p>In particular, this solution is not suitable, as <code>toList()</code> returns a new <code>List</code>:</p>
  
  <pre><code>List&lt;Person&gt; beerDrinkers = persons.stream()
      .filter(p -&gt; p.getAge() &gt; 16)
      .collect(Collectors.toList());
  </code></pre>
  
  <p>Note that the following solution does not work either, because the list should be <code>clear()</code>ed of its original values (but obviously, if you clear it <em>before</em> filtering, there's nothing left to filter...):</p>
  
  <pre><code>persons.stream()
      .filter(p -&gt; p.getAge() &gt; 16)
      .forEach((p) -&gt; persons.add(p));
  </code></pre>
  
  <p>(Also, I'd prefer a solution not involving the use of a 3rd party library or framework)</p>