使用 Java 8 Stream API 从对象列表中收集列表

问题描述 投票:0回答:3

我有这样的课程

public class Example {
    private List<Integer> ids;

    public getIds() {
        return this.ids; 
    }
}

如果我有一个像这样的此类的对象列表

List<Example> examples;

如何将所有示例的 id 列表映射到一个列表中? 我尝试过这样的:

List<Integer> concat = examples.stream().map(Example::getIds).collect(Collectors.toList());

但出现错误

Collectors.toList()

使用 Java 8 流 api 实现此目的的正确方法是什么?

java java-8
3个回答
57
投票

使用

flatMap

List<Integer> concat = examples.stream()
    .flatMap(e -> e.getIds().stream())
    .collect(Collectors.toList());

10
投票

另一种解决方案是使用方法引用表达式而不是 lambda 表达式:

List<Integer> concat = examples.stream()
                               .map(Example::getIds)
                               .flatMap(List::stream)
                               .collect(Collectors.toList());

0
投票

使用流和地图:-

    List<Integer> integerList = productsList.stream().map(x -> x.getId()).collect(Collectors.toList());

    

}

© www.soinside.com 2019 - 2024. All rights reserved.