Java 8 将具有相同值的列表流式传输到地图中

Java 8 Stream List into map with identical values

我的处境很奇怪。无论如何,是否可以将列表流式传输到具有相同值的地图?

aMap< Integer, List< String > >

类型

假设 b 只是一个整数列表,对应于 a 的键。

b.stream().map(x ->
    a.get(x).stream()
        .collect(
            Collectors.toMap(i -> i, x);
        )
);

我想要一个地图,其中所有值都是 x,所有键都来自 b 中的值。

上面的函数应该是return一个Stream< List< Map< String, Int > > >(显然不行)

toMap 方法中的第二个值也需要是 lambda (即它需要满足接口 Function<? super T, ? extends U>,其中 Tb 流中对象的类型,U 是结果映射中值的类型)

Map<Integer, List<String>> a = ...
List<Integer> b = ...
Stream<Map<String, Integer>> c = b.stream().map(x ->
        a.get(x).stream()
                .collect(Collectors.toMap(i -> i, i -> x)));