Я новичок в лямбда-выражении и пытался использовать его в своем назначении.
Проблема:
У меня есть две карты m1
и m2
типа Map<Integer, String>
, которые должны быть объединены в одну карту
Map<Integer, List<String>>
, где значения тех же ключей на обеих картах собираются в список и помещаются в новую карту.
Решение, основанное на том, что я изучил:
Map<Integer, List<String>> collated =
Stream.concat(m1.entrySet().stream(), m2.entrySet().stream()).collect(
Collectors.toMap(Entry::getKey,
Entry::getValue, (a, b) -> {
List<String> merged = new ArrayList<String>(a);
merged.addAll(b);
return merged;
}));
Но это решение ожидает, что source List
будет Map<Integer, List<String>>
, поскольку функция слияния в toMap ожидает, что операнды и результат будут одного типа.
Я не хочу менять исходную коллекцию. Просьба представить ваши данные о достижении этого, используя выражение лямбда.