Java Stream 返回某个属性的 List 实现步骤

1. 理解需求

在开始编写代码之前,我们首先需要理解需求。要返回某个属性的 List,我们需要从一个对象列表中提取出指定的属性,并将其组成一个新的 List 返回。

2. 准备数据

为了演示代码的实现,我们需要先准备一些数据。假设我们有一个 Student 类,包含 id、name 和 age 三个属性。我们的目标是从一个 Student 列表中提取出所有的 name 属性。

我们可以定义如下的 Student 类:

public class Student {
    private int id;
    private String name;
    private int age;

    // 构造函数和 getter、setter 方法省略

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

然后我们可以创建一个包含多个 Student 对象的列表:

List<Student> studentList = new ArrayList<>();
studentList.add(new Student(1, "Alice", 18));
studentList.add(new Student(2, "Bob", 20));
studentList.add(new Student(3, "Charlie", 22));

3. 使用 Java Stream 提取属性并返回 List

接下来,我们可以使用 Java Stream 来提取属性并返回 List。下面是实现这一步骤的代码:

List<String> nameList = studentList.stream()
        .map(Student::getName) // 使用 map 方法提取 name 属性
        .collect(Collectors.toList()); // 使用 collect 方法将提取的属性组成新的 List

在上述代码中,我们首先将 studentList 转换为 Stream 对象,然后使用 map 方法接收一个 lambda 表达式,该表达式指定要提取的属性。在这里,我们使用了方法引用 Student::getName 来提取 name 属性。

接下来,我们使用 collect 方法来将提取的属性组成新的 List。在这里,我们使用了 Collectors.toList() 方法来生成一个新的 List,其中包含了提取的 name 属性的值。

最后,我们将提取的属性保存在 nameList 中,并可以通过打印 nameList 来验证结果:

System.out.println(nameList); // 输出:[Alice, Bob, Charlie]

4. 完整代码示例

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

public class Main {
    public static void main(String[] args) {
        List<Student> studentList = new ArrayList<>();
        studentList.add(new Student(1, "Alice", 18));
        studentList.add(new Student(2, "Bob", 20));
        studentList.add(new Student(3, "Charlie", 22));

        List<String> nameList = studentList.stream()
                .map(Student::getName)
                .collect(Collectors.toList());

        System.out.println(nameList);
    }
}

class Student {
    private int id;
    private String name;
    private int age;

    // 构造函数和 getter、setter 方法省略

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

5. 关系图

使用 mermaid 的 erDiagram 语法可以绘制 Student 类的关系图,如下所示:

erDiagram
    Student {
        int id
        varchar name
        int age
    }

以上就是实现 Java Stream 返回某个属性的 List 的完整步骤。通过使用 Stream 的 map 和 collect 方法,我们能够方便地提取对象列表的指定属性,并组成一个新的 List 返回。希望这篇文章对你有帮助!