Как извлечь значения конкретной переменной экземпляра из Map, используя Java Stream API? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть HashMap, для каждого ключа значением является определенный пользователем объект. Этот пользовательский объект имеет переменную типа ArrayList. Как я могу извлечь этот ArrayList в один список с помощью API потока Java. Таким образом, размер моего HashMap равен 3. Размер списка массивов внутри каждого определенного пользователем объекта равен 1. Финальный выход должен быть массивом размером 3

.

Мой объект

class XYZ{
    List<ABC> list;
} 

Моя карта имеет значения {"1", XYZ_1},{"2",XYZ_2},{"3",XYZ_3}. Я хочу извлечь список из каждого объекта XYZ_1, XYZ_2,XYZ_3

1 Ответ

0 голосов
/ 29 августа 2018

Вы ищете Stream::flatMap

Map<Key, List<CustomClass>> map = new HashMap<>();

List<CustomClass> data = map.values().stream()
        .flatMap(Collection::stream)
        .collect(Collectors.toList());

EDIT

Поскольку у вас есть класс со списком внутри, вы можете изменить код так, чтобы он выглядел следующим образом

Map<KeyClass, CustomClass> map = new HashMap<>();

List<?> data = map.values().stream()
                    .map(CustomClass::getList)
                    .flatMap(List::stream)
                    .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...