55、stream流之过滤
发布人:shili8
发布时间:2025-03-14 22:35
阅读次数:0
**Stream 流之过滤**
在 Java 中,`Stream` 是一种高级的 API,用来处理数据集合。它提供了许多有用的方法来操作数据,如过滤、映射、聚合等。在本文中,我们将重点讨论 `Stream` 的过滤功能。
**什么是过滤**
过滤是一种常见的数据操作,用于从原始数据集中筛选出满足某些条件的元素。例如,如果我们有一个集合包含学生的信息,我们可能想过滤出年龄大于18 岁的学生。
**使用 `Stream` 过滤**
在 Java 中,可以使用 `Stream` 的 `filter()` 方法来实现过滤功能。该方法接受一个 `Predicate` 接口作为参数,用于指定过滤条件。
javaimport java.util.Arrays; import java.util.List; public 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; } } public class Main { public static void main(String[] args) { Liststudents = Arrays.asList( new Student("张三",20), new Student("李四",19), new Student("王五",21) ); // 过滤年龄大于18 岁的学生 List filteredStudents = students.stream() .filter(student -> student.getAge() >18) .toList(); System.out.println(filteredStudents); } }
在上面的例子中,我们首先创建一个 `Student` 类,包含 `name` 和 `age` 属性。然后,我们使用 `Arrays.asList()` 方法创建一个学生集合。
接下来,我们使用 `stream()` 方法将集合转换为 `Stream` 对象,然后调用 `filter()` 方法过滤出年龄大于18 岁的学生。最后,我们使用 `toList()` 方法将过滤后的结果转换为列表,并打印出来。
**使用 Lambda 表达式**
在 Java 中,可以使用 Lambda 表达式来简化代码。在上面的例子中,我们可以使用 Lambda 表达式来实现过滤功能。
javaListfilteredStudents = students.stream() .filter(student -> student.getAge() >18) .toList();
在这个例子中,我们直接使用 Lambda 表达式 `student -> student.getAge() >18` 来指定过滤条件。
**使用方法引用**
在 Java 中,可以使用方法引用来简化代码。在上面的例子中,我们可以使用方法引用来实现过滤功能。
javaListfilteredStudents = students.stream() .filter(Student::isAdult) .toList();
在这个例子中,我们定义一个静态方法 `isAdult()` 来指定过滤条件,然后使用方法引用 `Student::isAdult` 来调用该方法。
**总结**
在本文中,我们讨论了 `Stream` 的过滤功能。我们学习了如何使用 `filter()` 方法、Lambda 表达式和方法引用来实现过滤功能。通过这些例子,我们可以看到 `Stream` 提供了一种高效的方式来处理数据集合。
**参考**
* Java8 API 文档: />* Stream API 文档: