java - 8 filtre une liste sans créer une nouvelle liste
Je cherche le moyen le plus propre de filtrer une liste en Java-8, avec un simple lambda Predicate
, sans créer une nouvelle liste .
En particulier, cette solution ne convient pas, car toList()
renvoie un nouveau List
:
List<Person> 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()
ed 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));
(Aussi, je préférerais un solution n'impliquant pas l'utilisation d'une bibliothèque ou d'un framework tiers)
9
Author: Eric Leibenguth, 2015-08-01
1 answers
beerDrinkers.removeIf(p -> p.getAge() <= 16);
16
Author: JB Nizet, 2015-08-01 09:44:10