Java Stream 如何过滤

在Java中,Stream是一种非常强大和灵活的处理集合数据的方式。它可以通过一系列的操作来处理数据,其中一种常用的操作就是过滤。

过滤操作可以根据某个条件从流中筛选出符合条件的元素,这在解决大部分问题中非常实用。接下来,我将给出一个具体的问题,并提供一个Java Stream的过滤方案。

问题描述

假设我们有一个学生列表,每个学生都有一个名字和一个年龄。现在我们需要从列表中过滤出年龄大于等于18岁的学生。

解决方案

在Java中,我们可以使用Stream来过滤学生列表。首先,我们需要创建一个学生对象:

class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

接下来,我们创建一个学生列表并添加一些学生:

List<Student> students = new ArrayList<>();
students.add(new Student("Tom", 20));
students.add(new Student("Amy", 17));
students.add(new Student("Jack", 19));

现在我们可以使用Stream来过滤年龄大于等于18岁的学生。我们可以使用filter()方法来筛选出符合条件的学生,然后使用collect()方法将结果收集到一个新的列表中:

List<Student> filteredStudents = students.stream()
    .filter(student -> student.getAge() >= 18)
    .collect(Collectors.toList());

在这个例子中,我们使用lambda表达式student -> student.getAge() >= 18作为过滤条件。它会对每个学生进行评估,只保留年龄大于等于18岁的学生。

最后,我们可以打印出过滤后的学生列表:

for (Student student : filteredStudents) {
    System.out.println("Name: " + student.getName() + ", Age: " + student.getAge());
}

运行以上代码,我们将得到以下输出:

Name: Tom, Age: 20
Name: Jack, Age: 19

总结

通过使用Java Stream的filter()方法,我们可以很方便地过滤出符合条件的元素。在本例中,我们成功地过滤出了年龄大于等于18岁的学生。

使用Stream来处理集合数据,可以让代码更简洁和易读。它提供了丰富的操作方法,可以轻松解决各种数据处理问题。

使用Stream的过滤操作时,我们需要定义一个lambda表达式作为过滤条件,然后使用filter()方法将该条件应用到流中。最后,我们可以使用collect()方法将过滤结果收集到一个新的列表中。

希望本文能对你理解和使用Java Stream的过滤操作有所帮助。如果你有任何问题或疑问,请随时提问。