过滤Java集合的最佳方法是什么?

我想基于一个谓词过滤一个java.util.Collection。
最佳答案
Java 8(2014)使用一行代码中的streams和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集合的最佳方法是什么? - 代码日志