首页 > 解决方案 > Map 中的 Java 流

问题描述

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);

如何使用 Java 8 中的流从 mapOne 获取字符串值?

标签: javajava-stream

解决方案


您的问题的简单答案是:

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

其中 eachget获取内部映射,或者在 last 的情况下get获取最终值。

既然您提到了流,我想您可能是想问如何展平嵌套地图,以便您可以将最内层地图中的字符串作为集合获取。在这种情况下,您应该使用flatMap. flatMap嵌套 N 层深度的地图需要N 次调用。

mapOne.values().stream()
    .flatMap(x -> x.values().stream())
    .flatMap(x -> x.values().stream())
    .collect(Collectors.toList()) // or toSet()

推荐阅读