Как извлечь значения конкретной переменной экземпляра из 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());