Avatar ·

如何根据条件(谓词)过滤 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 库?