过滤Java集合的最佳方法是什么?我想过滤一个java.util.Collection基于谓词。
3 回答

慕尼黑5688855
TA贡献1848条经验 获得超2个赞
Java 8(2014)在一行代码中使用流和lambda解决这个问题:
List<Person> beerDrinkers = persons.stream() .filter(p -> p.getAge() > 16).collect(Collectors.toList());
这是一个补习.
使用Collection#removeIf
若要修改已到位的集合,请执行以下操作。(注意:在这种情况下,谓词将删除满足谓词的对象):
persons.removeIf(p -> p.getAge() <= 16);
蓝达允许在不编写循环或内部类的情况下过滤集合:
List<Person> beerDrinkers = select(persons, having(on(Person.class).getAge(), greaterThan(16)));

侃侃尔雅
TA贡献1801条经验 获得超16个赞
Iterator<Foo> it = col.iterator();while( it.hasNext() ) { Foo foo = it.next(); if( !condition(foo) ) it.remove();}
CollectionUtils.filterInPlace(col, new IPredicate<Foo>(){ public boolean keepIt(Foo foo) { return foo.isBar(); } });
添加回答
举报
0/150
提交
取消