Map листов перевести в list

142
03 ноября 2018, 13:00

Имеется

Map<String, List<Integer>>

как его можно перевести в Java 8 в

List<Integer> 
Answer 1
Map<String, List<Integer>> map = ...
List<Integer> list = map.values()
                        .stream()
                        .flatMap(List::stream)
                        .collect(Collectors.toList());
Answer 2

Используя метод values();

Map<...> map = new HashMap<>();
List<...> list = new ArrayList<>(map.values());

Документация Oracle по методу values() (EN)

Пример:

Map<String, List<Integer>> map = new HashMap<>();
map.put("", new ArrayList<>());
List<List<Integer>> list = new ArrayList<>(map.values());

Реализация:

    Map<String, List<Integer>> map = new HashMap<>();
    List<Integer> list = new ArrayList<>();
    List<List<Integer>> interimList = new ArrayList<>(map.values());;
    for(int i = 0; i < interimList.size(); i++)
        list.addAll(interimList.get(i));

Получилось немного костыльно, пришлось использовать промежуточный лист, из-за того что надо пройтись циклом по списку со списками. Если кто-то видит улучшенное решение, пусть поправит меня.

READ ALSO
Google Play Services signInSilently apiexception 4

Google Play Services signInSilently apiexception 4

пилю игру на LIBGDX встроил GPGS у меня такая проблема

157
Apache kaffka запуск тестового consumer приводит к ошибке &ldquo;Java.lang.OutOfMemoryError&rdquo;

Apache kaffka запуск тестового consumer приводит к ошибке “Java.lang.OutOfMemoryError”

Запускаю Apache kaffka на компьютере с Win7 с помощью стандартных команд (указанных в QuickStart)

170
Висeлица на Java. Хорошо ли спроектировано?

Висeлица на Java. Хорошо ли спроектировано?

Вопрос даже не вопрос, а, точнее сказать, просьба показать на мои возможные недочёты, предложить более грамотный код

157