java-8过滤列表而不创建新的列表
发布时间:2020-12-14 05:47:49 所属栏目:Java 来源:网络整理
导读:我正在寻找最干净的方式来过滤 Java-8中的列表,使用简单的lambda谓词,而不创建新的列表. 特别地,这个解决方案是不合适的,因为toList()返回一个新的List: ListPerson beerDrinkers = persons.stream() .filter(p - p.getAge() 16) .collect(Collectors.toLis
我正在寻找最干净的方式来过滤
Java-8中的列表,使用简单的lambda谓词,而不创建新的列表.
特别地,这个解决方案是不合适的,因为toList()返回一个新的List: List<Person> beerDrinkers = persons.stream() .filter(p -> p.getAge() > 16) .collect(Collectors.toList()); 请注意,以下解决方案也不起作用,因为列表应该清除其原始值(但是显然,如果在过滤之前清除它,则无需过滤…): persons.stream() .filter(p -> p.getAge() > 16) .forEach((p) -> persons.add(p)); (另外,我更喜欢不涉及使用第三方库或框架的解决方案) 解决方法beerDrinkers.removeIf(p -> p.getAge() <= 16); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |