Java 8 Stream List в карту с одинаковыми значениями
Я в странной ситуации. Есть ли способ потоковой передачи списка на карту с одинаковыми значениями?
т.е.
позволять 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 ответ
Решение
Второе значение в toMap
метод также должен быть лямбда (то есть он должен удовлетворять интерфейсу 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)));