Java8 List Stream 过滤

在Java8中,List是常用的集合类型之一,它可以存储一组有序的对象。而Stream是Java8新增的特性,它提供了一种便捷的处理集合数据的方式。在这篇文章中,我们将学习如何使用Java8的List Stream来进行过滤操作。

什么是List Stream?

Stream是Java8中引入的一种流式处理集合数据的方式。它提供了丰富的操作方法,可以极大地简化代码的编写。List Stream是Stream的一种特殊形式,它可以直接从List集合中创建。

在使用List Stream之前,我们需要先了解一些基本的概念。

流的创建

要创建一个List Stream,我们可以使用List接口的stream()方法,将List集合转换成一个流:

List<String> list = Arrays.asList("apple", "banana", "cherry");
Stream<String> stream = list.stream();

中间操作和终端操作

Stream提供了两种类型的操作:中间操作和终端操作。

中间操作是指对流进行转换和处理的操作,它们返回一个新的Stream对象。常用的中间操作包括filter()map()distinct()等。

终端操作是指对流进行最终处理的操作,它们返回一个非流的结果,例如集合、数组或者某个值。常用的终端操作包括collect()forEach()count()等。

过滤操作示例

假设我们有一个存储员工信息的List集合,每个员工包含姓名和年龄两个属性,我们希望从中筛选出年龄大于30岁的员工。以下是一个示例代码:

import java.util.ArrayList;
import java.util.List;

public class Employee {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public static void main(String[] args) {
        List<Employee> employees = new ArrayList<>();
        employees.add(new Employee("John", 28));
        employees.add(new Employee("Alice", 32));
        employees.add(new Employee("Bob", 40));
        employees.add(new Employee("David", 25));

        List<Employee> filteredEmployees = employees.stream()
                .filter(e -> e.getAge() > 30)
                .collect(Collectors.toList());

        System.out.println("Filtered employees: ");
        for (Employee employee : filteredEmployees) {
            System.out.println("Name: " + employee.getName() + ", Age: " + employee.getAge());
        }
    }
}

在上面的代码中,我们首先创建了一个存储员工信息的List集合,并添加了一些员工对象。然后,我们使用List的stream()方法将List转换为一个Stream对象。

接下来,我们使用filter()方法对流进行过滤,只保留年龄大于30岁的员工。最后,我们使用collect()方法将过滤后的员工信息收集到一个新的List集合中。

最后,我们使用forEach()方法遍历新的List集合,输出过滤后的员工信息。

总结

通过本文的介绍,我们学习了如何使用Java8的List Stream进行过滤操作。List Stream提供了丰富的操作方法,可以极大地简化集合数据的处理。我们可以根据具体的需求,使用不同的中间操作和终端操作来实现各种功能。

希望本文能对你理解和使用Java8的List Stream有所帮助!


## 旅行图

```mermaid
journey
    title Java8 List Stream 过滤
    section 创建List Stream
    section 中间操作和终端操作
    section 过滤操作示例
    section 总结

参考链接

  • [Java Stream API](
  • [Java 8 Stream Tutorial](