我想根据谓词过滤 java.util.Collection
。
最佳答案
Java 8 (2014) 在一行代码中使用流和 lambdas 解决了这个问题:
List<Person> beerDrinkers = persons.stream()
.filter(p -> p.getAge() > 16).collect(Collectors.toList());
这是 tutorial .
使用 Collection#removeIf
就地修改集合。 (注意:在这种情况下,谓词将删除满足谓词的对象):
persons.removeIf(p -> p.getAge() <= 16);
lambdaj允许在不编写循环或内部类的情况下过滤集合:
List<Person> beerDrinkers = select(persons, having(on(Person.class).getAge(),
greaterThan(16)));
你能想象出更易读的东西吗?
免责声明:我是 lambdaj 的贡献者
关于java - 如何过滤 Java 集合(基于谓词)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/122105/