Для каждого KeyValue
для данного Person
создайте запись карты. Затем используйте оператор flatMap
, чтобы объединить все эти потоки в один большой поток. Наконец, соберите его в карту, используя toMap
коллектор. Учитывая, что значение, возвращаемое KeyValue.getValue
, всегда уникально (в соответствии с вашей формулировкой проблемы), конфликты клавиш могут не возникатьВот как это выглядит.
Map<String, String> keyToPersonMap = people.stream()
.flatMap(p -> p.getKeyValue().stream()
.map(kv -> new AbstractMap.SimpleEntry<>(kv.getValue(), p.getValue1())))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));