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。