我正在寻找最简洁的方法来过滤Java-8中的列表,使用简单的lambda Predicate
,而不创建新列表。
特别是,此解决方案不合适,因为toList()
会返回新的List
:
List<Person> beerDrinkers = persons.stream()
.filter(p -> p.getAge() > 16)
.collect(Collectors.toList());
请注意,以下解决方案也不起作用,因为列表应该是clear()
其原始值(但很明显,如果您在过滤之前将其清除,则没有任何内容可供使用过滤...):
persons.stream()
.filter(p -> p.getAge() > 16)
.forEach((p) -> persons.add(p));
(另外,我更喜欢不涉及使用第三方库或框架的解决方案)
答案 0 :(得分:23)
beerDrinkers.removeIf(p -> p.getAge() <= 16);