Вот один из способов сделать это:
Map<String, String> map =
sourceList.stream()
.map(source -> targetList.stream()
.filter(dest -> dest.getUserId().equals(source.getUserId()))
.map(dest -> new SimpleEntry<>(source.getPersonaId(), dest.getPersonaId()))
.firstFirst())
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));
Для каждого элемента списка источников вы найдете соответствующий элемент списка целей, сопоставьте эти элементы с Map.Entry
, который содержит идентификаторы двух человек. и собрать все записи в Map
.