Объединить список 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(); 
Другие вопросы по тегам