java-8 filtrer une liste sans créer une nouvelle liste

Je cherche le moyen le plus propre de filtrer une liste dans Java-8, avec un simple Predicate lambda, sans créer de nouvelle liste .

En particulier, cette solution ne convient pas, car toList() renvoie une nouvelle List :

 List beerDrinkers = persons.stream() .filter(p -> p.getAge() > 16) .collect(Collectors.toList()); 

Notez que la solution suivante ne fonctionne pas non plus, car la liste doit être clear() de ses valeurs d’origine (mais évidemment, si vous l’effacez avant le filtrage, il n’y a plus rien à filtrer …):

 persons.stream() .filter(p -> p.getAge() > 16) .forEach((p) -> persons.add(p)); 

(En outre, je préférerais une solution n’impliquant pas l’utilisation d’une bibliothèque ou d’un framework tiers)

 beerDrinkers.removeIf(p -> p.getAge() <= 16);