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的映射操作,将元素转换为所需的值