Java-потоки на карте - PullRequest
       4

Java-потоки на карте

0 голосов
/ 05 октября 2019
Map<Integer,String> maper = new HashMap<>();
maper.put(1, "Naveen");

Map<Integer,Map<Integer,String>> map1 = new HashMap<>();
map1.put(1, maper);

Map<Integer,Map<Integer,Map<Integer,String>>> mapOne = new HashMap<>();
mapOne.put(1, map1);

Как получить значение String из mapOne, используя потоки в Java 8?

1 Ответ

1 голос
/ 05 октября 2019

Простой ответ на ваш вопрос будет просто:

mapOne.get(1).get(1).get(1)

, где каждый get получает внутреннюю карту или, в случае последнего get, получает окончательное значение.

Поскольку вы упомянули потоки, я думаю, вы, вероятно, хотели спросить, как сгладить вложенную карту, чтобы вы могли получить строки в самой внутренней карте как коллекцию. В этом случае вы должны использовать flatMap. N вызовов на flatMap требуется для карты, вложенной в N уровней глубины.

mapOne.values().stream()
    .flatMap(x -> x.values().stream())
    .flatMap(x -> x.values().stream())
    .collect(Collectors.toList()) // or toSet()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...