首页 > 解决方案 > 如何将地图映射到列表?

问题描述

我有这个代码

Set<String> ccy = groupedPortfolio.values().stream()
            .map(accountStatusListMap -> accountStatusListMap.values().stream()
                    .map(portfolios -> portfolios.stream().map(Portfolio::getCcy)))
            .collect(Collectors.toSet());

用于从 groupedPortfolio 转换,这是从 Portfolios 映射到一组货币的映射。在我的代码中我有错误

Required type: Set<String>
Provided: Set<Stream<Stream<UUID>>>

如何正确执行?

标签: javajava-stream

解决方案


我会试试这个。将所有流转换成一个大的投资组合。然后通过地图检索您想要的信息。

Set<String> ccy = groupedPortfolio.values()
     .stream()
     .flatMap(accountStatusListMap -> accountStatusListMap.values().stream())
     .flatMap(List::stream).map(Portfolio::getCcy)
     .collect(Collectors.toSet());

推荐阅读