Java 8 Stream 过滤
在 Java 8 中引入的 Stream API 提供了一种新的处理数据集合的方式,可以通过流式操作来处理集合中的元素。在实际应用中,经常需要对数据进行过滤操作,以便筛选出符合特定条件的元素。在本文中,我们将介绍如何使用 Java 8 的 Stream API 进行过滤操作,并提供相应的代码示例。
Stream API 简介
Stream 是 Java 8 中引入的一个新的 API,用于支持对集合数据进行高效的处理和操作。通过 Stream API,我们可以轻松地进行数据的筛选、转换、组合等操作,使得代码更加简洁和易读。
Stream API 主要包含以下几个核心概念:
- Stream:代表一个序列化的元素集合,可以支持各种操作。
- Intermediate Operation:中间操作,用于对 Stream 进行一些处理,比如过滤、映射、排序等。
- Terminal Operation:终结操作,用于触发 Stream 的处理,并生成最终结果。
Stream 过滤操作
Stream API 提供了 filter()
方法,用于对 Stream 中的元素进行过滤。通过 filter()
方法,我们可以指定一个 Predicate 来筛选出符合条件的元素。
下面是一个简单的示例,演示如何使用 Stream 过滤操作:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamFilterExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eve");
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith("A"))
.collect(Collectors.toList());
System.out.println(filteredNames);
}
}
在上面的示例中,我们创建了一个包含一些姓名的 List,并使用 Stream API 对这些姓名进行过滤,只保留以字母"A"开头的姓名。最终结果将会输出 ["Alice"]
。
Stream 过滤操作示例
接下来,我们将通过一个更加具体的示例来演示如何使用 Java 8 的 Stream API 进行过滤操作。假设我们有一个包含员工信息的 List,每个员工具有姓名、年龄和薪水等属性,我们需要筛选出年龄大于 30 岁且薪水大于 5000 的员工。下面是相应的代码示例:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Employee {
private String name;
private int age;
private double salary;
public Employee(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public double getSalary() {
return salary;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", age=" + age +
", salary=" + salary +
'}';
}
public static void main(String[] args) {
List<Employee> employees = Arrays.asList(
new Employee("Alice", 25, 6000),
new Employee("Bob", 35, 4500),
new Employee("Charlie", 40, 7000),
new Employee("David", 30, 5500),
new Employee("Eve", 28, 4800)
);
List<Employee> filteredEmployees = employees.stream()
.filter(employee -> employee.getAge() > 30 && employee.getSalary() > 5000)
.collect(Collectors.toList());
filteredEmployees.forEach(System.out::println);
}
}
在上面的示例中,我们定义了一个 Employee 类表示员工信息,然后创建了一个包含员工信息的 List,并使用 Stream 进行过滤操作,最终输出符合条件的员工信息。
结语
通过以上示例,我们了解了如何使用 Java 8 的 Stream API 进行过滤操作。Stream API 提供了丰富的中间操作和终结操作,可以帮助我们高效地处理集合中的元素。在实际开发中,合理利用 Stream API,可以使代码更加简洁、易读,并提高程序的性能和可