java - 如何过滤 Java 集合(基于谓词)?

标签 java collections filter

我想根据谓词过滤 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/

相关文章:

Jquery 使用复选框选择表行

scala - 如何在 Scala 的 map 中访问列表的元组?

java - 排序后找到项目的位置?

php - jQuery 多复选框页面过滤器

java - Text-To-Speech 上的服务连接泄露

java - 如何从列表集合中获取特定元素?

java - 过滤与java中特定列值对应的行

java - 在 JUnit 测试中使用常量或字段

java - 使用 JBehave 编写逻辑测试有意义吗?

java - 为什么 iText form.getAppearanceStates(key) 方法返回复选框字段的值不一致?