我处于一种奇怪的境地。无论如何将列表流式传输到具有相同值的地图?
即
让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 > > >
(显然它不起作用)
答案 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)));