Java 8替代Map.entry()来将值映射到新Map?

问题描述 投票:0回答:1

我已经解决了很长时间以来一直在解决的问题,不幸的是,由于目标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}

现在是我的问题,在Java 8中无需使用Map.entry(...)就能得到这个结果吗?

我已经解决了很长时间以来一直在解决的问题,不幸的是,由于目标Java版本是Java 8,因此我无法使用该解决方案。Map ,String> map = new ...

java lambda stream
1个回答
1
投票

您可以使用

.map(city -> new AbstractMap.SimpleEntry<>(city, entry.getValue())))
© www.soinside.com 2019 - 2024. All rights reserved.