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) {
List students = 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 文档:

