Объединить список pojos в карту целых чисел, которые можно объединить по ключу
Я пытаюсь реализовать следующую логику:
У меня есть карта целочисленных идентификаторов с целым числом. У меня есть список Pojos, представляющих идентификаторы. Я хочу объединить эти два и получить карту pojos для целого числа.
На данный момент у меня есть:
return EntryStream.of(idToCountMapping)
.mapKeys(k -> StreamEx.of(pojos).findFirst(s -> s.getId().equals(k)))
.filterKeys(Optional::isPresent)
.mapKeys(Optional::get)
.mapKeyValue(SuperCoolNewPojo::new)
.toList();
Первый mapKeys()
звонок кажется мне чем-то, что, вероятно, гораздо лучше выразить по-другому.
Любая помощь была бы замечательной!
Спасибо, Энтони
1 ответ
Хотя я бы не смог ответить полностью на основе streamex
, но из того, что я могу сделать вывод и концептуализировать как подход с использованием потоков:
Коллекция pojos
может быть преобразован в Map
Такие как:
Map<String, POJO> idToPojoMap = pojos.stream()
.collect(Collectors.toMap(Pojo::getId,
Function.identity(), (a,b) -> a);
в дальнейшем его использование в вашем коде становится проще:
return EntryStream.of(idToCountMapping)
.filterKeys(k -> idToPojoMap.keySet().contains(k)) // only if part of the created map
.mapKeyValue(SuperCoolNewPojo::new)
.toList();