Допустим, у меня есть структура, описанная в заголовке:
Map<String, Map<String, Car>> mapNeighborhood
, которая содержит все автомобили в окрестности, проиндексированные по адресу и табличке соответственно.Я хочу выбрать все красные машины, чтобы перекрасить их в черный.Чтобы выполнить эту задачу, я попытался «выровнять» обе карты и получить список с использованием Java 8. Получив список, применяя предикат, я могу выбрать только красные автомобили и применить перерисовку.
List<Car> listCars = new ArrayList<Car>();
mapNeighborhood.values().forEach(map -> map.values()
.forEach(car -> listCars.add(car)));
listCars.stream().filter(Car::isRed)
.forEach(car -> car.repaint(Color.Black));
Я уверен, что вы можете добиться того же, используя только одну строку в Java 8, но я думаю, что вы можете потерять разборчивость.
Мой вопрос: есть ли другой менее подробный способ сглаживания Карт всписок?Может быть, используя flatMap
.Заранее спасибо.