Java 8 альтернатива Map.entry () для отображения значений на новую карту? - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть решение проблемы, которую я давно пытаюсь решить. К сожалению, я не могу использовать решение, так как целевая java версия - Java 8.

Map<List<String>, String> map = new HashMap<>();
    map.put(List.of("Los Angeles", "New York", "Chicago"), "USA");
    map.put(List.of("Toronto", "Vancover", "Montréal"), "Canada");

    Map<String, String> newMap = map.entrySet()
        .stream()
        .flatMap(entry -> entry.getKey()
            .stream()
            .map(city -> Map.entry(city, entry.getValue())))
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));

. Это вернет мне карту типа: {New York=USA, Chicago=USA, Los Angeles=USA, Toronto=Canada}

Теперь мой вопрос, можно получить этот результат без использования Map.entry (...) в Java 8?

1 Ответ

4 голосов
/ 20 февраля 2020

Вы можете использовать

.map(city -> new AbstractMap.SimpleEntry<>(city, entry.getValue())))
...