Java Stream 取List对象的某几值

引言

在Java开发中,经常会遇到需要从一个List对象中取出某几个特定的值的情况。Java提供了Stream API,它可以简化对集合的操作,并提供了一种流畅、便捷的方式来处理集合中的元素。本文将介绍如何使用Java Stream来取List对象中的某几个值。

流程

下面是整个流程的步骤概览:

步骤 描述
1 创建一个List对象
2 将List对象转换为Stream对象
3 使用Stream的过滤操作,筛选出符合条件的元素
4 使用Stream的映射操作,将元素转换为所需的值
5 将Stream对象转换为List对象

接下来将详细介绍每一步的具体操作。

步骤详解

1. 创建一个List对象

首先,我们需要创建一个List对象,作为我们要操作的数据源。例如,我们创建一个包含Person对象的List:

List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 25));
personList.add(new Person("Bob", 30));
personList.add(new Person("Charlie", 35));

2. 将List对象转换为Stream对象

使用stream()方法将List对象转换为Stream对象,以便后续的操作。示例代码如下:

Stream<Person> personStream = personList.stream();

3. 使用Stream的过滤操作,筛选出符合条件的元素

通过Stream的过滤操作,我们可以筛选出符合特定条件的元素。例如,我们只想保留年龄大于30的Person对象,可以使用filter()方法进行过滤。示例代码如下:

Stream<Person> filteredStream = personStream.filter(person -> person.getAge() > 30);

4. 使用Stream的映射操作,将元素转换为所需的值

通过Stream的映射操作,我们可以将元素转换为所需的值。例如,我们只想获取Person对象的姓名,可以使用map()方法进行映射。示例代码如下:

Stream<String> nameStream = filteredStream.map(Person::getName);

在上述代码中,Person::getName表示使用Person对象的getName()方法进行映射。

5. 将Stream对象转换为List对象

最后,我们可以使用Stream的collect()方法将Stream对象转换为List对象。示例代码如下:

List<String> nameList = nameStream.collect(Collectors.toList());

在上述代码中,Collectors.toList()表示将Stream中的元素收集到一个List中。

完整示例代码

下面是完整的示例代码,展示了如何使用Java Stream来取List对象的某几个值:

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

public class StreamExample {

    public static void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("Alice", 25));
        personList.add(new Person("Bob", 30));
        personList.add(new Person("Charlie", 35));

        Stream<Person> personStream = personList.stream();
        Stream<Person> filteredStream = personStream.filter(person -> person.getAge() > 30);
        Stream<String> nameStream = filteredStream.map(Person::getName);
        List<String> nameList = nameStream.collect(Collectors.toList());

        System.out.println(nameList);
    }
}

class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

运行上述示例代码,输出结果为:

[Charlie]

状态图

下面是该流程的状态图表示:

stateDiagram
    [*] --> 创建List对象
    创建List对象 --> 将List对象转换为Stream对象
    将List对象转换为Stream对象 --> 使用Stream的过滤操作,筛选出符合条件的元素
    使用Stream的过滤操作,筛选出符合条件的元素 --> 使用Stream的映射操作,将元素转换为所需的值