list.stream() 取对象属性
时间: 2025-06-26 13:08:34 浏览: 3
### 如何通过 Java Stream API 使用 `map` 方法获取对象属性
在 Java 的 Stream API 中,可以通过 `map` 方法提取对象的特定属性并将其转换为目标类型。以下是具体说明以及示例代码。
#### 背景介绍
假设存在一个名为 `Person` 的类,其中包含两个字段:`name` 和 `age`。如果需要从一组 `Person` 对象中提取所有的名字或年龄,则可以使用 `Stream.map()` 方法完成此操作[^1]。
#### 示例代码
下面展示了一个完整的例子,演示如何使用 `map` 提取对象的属性:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
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;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
public class Main {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Alice", 30),
new Person("Bob", 25),
new Person("Charlie", 35)
);
// 获取所有人的姓名列表
List<String> names = people.stream()
.map(Person::getName)
.collect(Collectors.toList());
System.out.println("Names: " + names);
// 获取所有人的年龄列表
List<Integer> ages = people.stream()
.map(Person::getAge)
.collect(Collectors.toList());
System.out.println("Ages: " + ages);
}
}
```
上述代码实现了以下功能:
- 定义了一个简单的 `Person` 类,并提供了必要的 getter 方法。
- 创建了一个包含多个 `Person` 实例的列表。
- 利用 `stream().map()` 将每个 `Person` 映射为其对应的名称或年龄,并最终收集到一个新的列表中。
#### 关键点解析
1. **映射函数的选择**
在调用 `map` 方法时,传入的是一个函数式接口实例(通常是方法引用)。例如,在上面的例子中分别使用了 `Person::getName` 和 `Person::getAge` 来指定要提取的属性。
2. **结果收集器的作用**
结果通常会通过 `Collectors.toList()` 或其他类似的收集器进行汇总,以便将流中的元素转化为所需的集合形式。
---
###
阅读全文
相关推荐


















