Как извлечь значения конкретной переменной экземпляра из Map, используя Java Stream API?

У меня есть 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 ответ

Решение

Ты ищешь Stream::flatMap

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

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

РЕДАКТИРОВАТЬ

Поскольку у вас есть класс со списком внутри, вы можете изменить свой код так

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

List<?> data = map.values().stream()
                    .map(CustomClass::getList)
                    .flatMap(List::stream)
                    .collect(Collectors.toList());
Другие вопросы по тегам