加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读