Преобразовать Map в Map через stream api

178
31 июля 2018, 22:40

Есть объект, и есть view для этого объекта.
Есть Map<String, List<MyObject>>. Необходимо получить Map<String, List<MyObjectView>>.
Сейчас я это делаю так:

Map<String, List<MyObject>> map;
Map<String, List<MyObjectView>> response = new HashMap<>();
for (Map.Entry<String, List<MyObject>> m : map.entrySet()) {
    List<MyObjectView> dtos = m.getValue()
            .stream()
            .map(Function<>)
            .collect(Collectors.toList());
    response.put(m.getKey(), dtos);
}

В .map с помощью Function происходит преобразование MyObject в MyObjectView.
Можно ли то же самое сделать без создания дополнительной Map-ы(response)?

Answer 1

Можно было бы, если бы у MyObject и MyObjectView был общий супертип

Map<String, List<? extends MyType>> map = ...;
map.replaceAll((k, v) -> v.stream()
                          .map(function)
                          .collect(Collectors.toList()));

Но так как типы разные, придётся сгенерировать новое отображение

Map<String, List<MyObjectView>> response = map.entrySet()
  .stream()
  .collect(Collectors.toMap(Map.Entry::getKey,
                            e - > e.getValue()
                                   .stream()
                                   .map(function)
                                   .collect(Collectors.toList())));
READ ALSO
Возможно ли из одного класса получить картинку из другого класса, а именно из другого layout, относящегося ко второму классу

Возможно ли из одного класса получить картинку из другого класса, а именно из другого layout, относящегося ко второму классу

Мне необходимо из одного класса получить картинку из другого класса, а именно из другого layout, относящегося ко второму классу

155
Настройка Spring Boot OAuth2

Настройка Spring Boot OAuth2

Я хочу сделать следующее приложение: Есть 2 конечные токи API: 1) /hello/user - возвращает строку Hello ${username}, где username имя пользователя 2) /hello/anonymous - возвращает...

229
Загрузка бинарного файла на устройство

Загрузка бинарного файла на устройство

Задача: скачать файл из БД формата mp4 как бинарный файлПроблема: файл скачивается, но всегда в каком-то "урезанном формате"

185
Не работает sm в Bootstrap 4

Не работает sm в Bootstrap 4

Подскажите почему не включаеться класс sm, если к примеру убрать md класс то sm работаетhttp://prntscr

243