使用流加入2个Java 8地图

时间:2018-10-25 20:37:36

标签: java java-8 java-stream

我有2张地图

Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))

我想将这些地图加入mapA中的值和mapB中的键,结果应该是

Map<A, B> mapA
Map<B, List<C>> mapB

我愿意知道如何使用Java8中的流来做到这一点。

为简单起见,A,B,C在我看来都是字符串。

2 个答案:

答案 0 :(得分:4)

您可以遍历地图并轻松构建新地图。

Map<A,List<C>> mapC = new HashMap<>();

mapA.forEach((key,value)->mapC.put(key, mapB.get(value)));

您可以使用this链接,该链接比较各种迭代键值对的效率,以选择要使用的方法。

答案 1 :(得分:2)

您可以这样做:

mapC = mapA.entrySet()
        .stream()
        .collect(Collectors.toMap(Map.Entry::getKey, e -> mapB.get(e.getValue())));