如何根据条件(谓词)过滤 Java 集合?
大家好!我是 Java 新手,遇到了一个问题:我有一个 `Person` 对象列表,包含 `name` 和 `age` 字段。我需要只获取年龄大于 18 岁的人。我知道可以用 `for` 循环遍历并将符合条件的元素添加到新列表中,但这看起来很冗长。我听说 Java 8 引入了 streams 和 lambdas,但还没弄清楚如何用它们来过滤集合。
以下是我的代码示例:
```java
List people = new ArrayList<>();
people.add(new Person("Alice", 22));
people.add(new Person("Bob", 17));
people.add(new Person("Charlie", 19));
// 如何获取成年人列表?
// 目前我是这样做的:
List adults = new ArrayList<>();
for (Person p : people) {
if (p.getAge() >= 18) {
adults.add(p);
}
}
```
这样是可行的,但代码很长,尤其是需要按不同条件过滤时。有没有更优雅的方法?比如类似 `filter()` 的方法或 Apache Commons 库?