У меня проблема с Stream API ... снова. Функциональность, которую я пытаюсь реализовать, не самая сложная, но у меня возникают трудности с фильтрацией, поскольку существуют несовместимые типы, и я не знаю, как сделать сравнение правильно. Идея состоит в том, чтобы получить информацию об отделах, с которыми связаны данные разделы.
department.getSectionId()
возвращает Long
, в то время как Section::getId
является Integer
(который я не могу изменить)
private List<DepartmentInfo> retrieveLinkedDepartments(final Collection<Section> sections) {
return this.departmentDao
.findAll()
.stream()
.filter(department -> department.getSectionId() != null)
.filter(department -> department.getSectionId().equals(sections.stream().map(Section::getId)))
.map(this.departmentInfoMapper::map)
.collect(Collectors.toList());
}
Конечно, результат основного предиката всегда ложен. Я знаю, что код ужасен, и я не правильно определяю условия, но надеюсь, вы поняли идею. Возможно, есть возможность как-то объединить эти коллекции или сравнить с умом.
Заранее спасибо!