Как сделать карту карт в список? - PullRequest
0 голосов
/ 19 июня 2020

У меня есть этот код

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

для перевода из groupedPortfolio, который представляет собой карту карт в набор валют из Portfol ios. В моем коде ошибка

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

Как это правильно сделать?

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Я бы попробовал это. Преобразуйте все потоки в один большой Portfol ios. Затем получите нужную информацию с помощью карты.

Set<String> ccy = groupedPortfolio.values()
     .stream()
     .flatMap(accountStatusListMap -> accountStatusListMap.values().stream())
     .flatMap(List::stream).map(Portfolio::getCcy)
     .collect(Collectors.toSet());
0 голосов
/ 19 июня 2020

Найдите другое решение, помимо вашего:

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

Полный код можно найти по этой ссылке .

...