猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
过滤Java集合的最佳方法是什么?
过滤Java集合的最佳方法是什么?
我想过滤一个
java.util.Collection
基于谓词。
鸿蒙传说
浏览 901
回答 3
3回答
慕尼黑5688855
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)));
0
0
0
侃侃尔雅
“最好”的方式太宽泛了。是“最短”吗?“最快”?“可读性”?过滤到位还是进入另一个集合?最简单(但不是最易读)的方法是迭代它并使用Iterator.emove()方法:Iterator<Foo> it = col.iterator();while( it.hasNext() ) { Foo foo = it.next(); if( !condition(foo) ) it.remove();}现在,为了使它更具可读性,您可以将其包装到实用程序方法中。然后创建一个IPredicate接口,创建该接口的匿名实现,并执行如下操作:CollectionUtils.filterInPlace(col, new IPredicate<Foo>(){ public boolean keepIt(Foo foo) { return foo.isBar(); } });其中filterInPlace()迭代集合并调用Predicate.memit()来了解是否将实例保存在集合中。我看不出只为这个任务引入第三方库的正当理由。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续