Java 8 将具有相同值的列表流式传输到地图中
Java 8 Stream List into map with identical values
我的处境很奇怪。无论如何,是否可以将列表流式传输到具有相同值的地图?
即
设 a
为 Map< 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>
,其中 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)));
我的处境很奇怪。无论如何,是否可以将列表流式传输到具有相同值的地图?
即
设 a
为 Map< 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>
,其中 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)));