过滤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
提交
取消
