java-8 在不创建新列表的情况下过滤列表
我正在寻找在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));
(另外,我更喜欢不涉及使用第三方库或框架的解决方案)