stream流收集list某个属性
时间: 2025-05-23 20:56:40 浏览: 9
### 使用 Java Stream API 收集列表中的特定属性
为了从对象列表中提取特定属性并将其收集到新的集合中,`Stream.collect()` 方法提供了强大的功能。下面是一个具体的例子来展示如何实现这一点。
假设有一个 `Person` 类,其中包含姓名 (`name`) 和年龄 (`age`) 属性:
```java
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;
}
}
```
如果目标是从一组 `Person` 对象中仅抽取名字,并将这些名字放入一个新的列表里,则可以通过如下方式完成操作:
```java
import java.util.*;
import java.util.stream.Collectors;
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);
}
}
```
这段代码首先通过 `.stream()` 创建了一个流管道,接着利用`.map()`方法映射每个人员的名字,最后调用`.collect(Collectors.toList())`把结果聚集为一个新列表[^1]。
对于更复杂的场景,比如想要创建自定义类型的容器而不是简单的列表时,可以使用 `Collectors.toCollection(Supplier)` 来指定所需的集合类型,这允许更加灵活地控制最终输出的形式[^2]。
阅读全文
相关推荐


















