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);