Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将值映射到新映射的Map.entry()的Java 8替代方案?_Java_Lambda_Java 8_Java Stream - Fatal编程技术网

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

将值映射到新映射的Map.entry()的Java 8替代方案?,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,我找到了一个解决问题的方法,我一直在努力解决这个问题。 不幸的是,我无法使用该解决方案,因为目标java版本是Java8 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"),

我找到了一个解决问题的方法,我一直在努力解决这个问题。 不幸的是,我无法使用该解决方案,因为目标java版本是Java8

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)));
这将返回一张类似于:{纽约=美国,芝加哥=美国,洛杉矶=美国,多伦多=加拿大}的地图

现在我的问题是,我能在不使用Map.entry的情况下得到这个结果吗。。。在Java 8中?

可以使用

.map(city -> new AbstractMap.SimpleEntry<>(city, entry.getValue())))
你可以用

.map(city -> new AbstractMap.SimpleEntry<>(city, entry.getValue())))
城市->新建java.util.AbstractMap.SimpleEntrycity,entry.getValue。如果lib已经在类或模块路径上,那么您还可以使用org.apache.commons.lang3.tuple.Pair.ofcity、entry.getValue,这更简洁。它是Map.entrySet,而不是Map.entry,是什么让您认为您需要一个替代方法?@user207421是创建条目的Java 9+快捷方式。它在Java 8.city->new Java.util.AbstractMap.SimpleEntrycity、entry.getValue中不可用。如果lib已经在类或模块路径上,那么您还可以使用org.apache.commons.lang3.tuple.Pair.ofcity、entry.getValue,这更简洁。它是Map.entrySet,而不是Map.entry,是什么让您认为您需要一个替代方法?@user207421是创建条目的Java 9+快捷方式。它在Java 8中不可用。更接近Map.entry…关于功能,可能是SimpleImmutableEntry,甚至是新的AbstractMap.SimpleImmutableEntryObjects.RequirenNullCity,Objects.RequirenNullEntry.getValue。但是,如果说简洁性很重要的话,SimpleEntry显然更接近Map.entry…关于功能,SimpleImmutableEntry甚至是新的AbstractMap.SimpleImmutableEntryObjects.RequiredOnNullCity,Objects.RequiredOnNullEntry.getValue。但如果说简洁性很重要的话,SimpleEntry显然更接近…