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)));
Другие вопросы по тегам