Java 8 Stream List列入具有相同值的映射

时间:2017-01-12 00:52:47

标签: java java-8 java-stream collectors

我处于一种奇怪的境地。无论如何将列表流式传输到具有相同值的地图?

a属于Map< Integer, List< String > >

类型

让我们说b只是一个与a的键对应的整数列表。

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

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

上述函数应返回Stream< List< Map< String, Int > > >(显然它不起作用)

1 个答案:

答案 0 :(得分:2)

toMap方法中的第二个值也需要是一个lambda以及(即它需要满足接口Function<? super T, ? extends U>,其中T是对象的类型b流和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)));