Java8 根据对象值过滤 List

在 Java 编程中,我们经常会遇到需要根据对象某个属性的值来对 List 进行过滤的情况。在 Java 8 引入的 Stream API 中,我们可以方便地使用 lambda 表达式来实现这一功能。

Stream API

Stream 是 Java 8 中一个非常强大的新特性,它允许我们对集合进行函数式操作。通过 Stream,我们可以轻松地对集合进行过滤、映射、排序等操作,使代码更加简洁和易于理解。

示例代码

假设我们有一个 Person 类,该类包含了姓名和年龄两个属性:

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

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

    // 省略 getter 和 setter 方法
}

现在我们有一个包含多个 Person 对象的 List,我们希望根据年龄大于等于 18 的 Person 对象来过滤该 List。下面是使用 Stream API 实现过滤的代码示例:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Person> persons = new ArrayList<>();
        persons.add(new Person("Alice", 20));
        persons.add(new Person("Bob", 16));
        persons.add(new Person("Charlie", 25));

        List<Person> adults = persons.stream()
                .filter(person -> person.getAge() >= 18)
                .collect(Collectors.toList());

        adults.forEach(person -> System.out.println(person.getName()));
    }
}

在上面的代码中,我们首先将 List 转换为 Stream,然后使用 filter 方法过滤出年龄大于等于 18 的 Person 对象,最后使用 collect 方法将过滤后的结果转换为 List。最终,我们将符合条件的 Person 对象的姓名打印出来。

效果展示

下面是使用 mermaid 插件绘制的过滤 List 流程的甘特图:

gantt
    title 过滤 List 流程
    section 过滤
    创建对象: 2022-11-01, 1d
    过滤对象: after 创建对象, 2d
    转换为 List: after 过滤对象, 1d
    打印结果: after 转换为 List, 1d

结语

通过引入 Stream API,我们可以更加方便地对集合进行操作,使代码更加简洁和易于维护。在实际开发中,我们可以根据具体的业务需求,灵活运用 Stream API 中的各种方法,来实现我们想要的功能。希望本文能帮助你更好地理解如何使用 Java 8 根据对象值过滤 List。