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,可以使代码更加简洁、易读,并提高程序的性能和可