У меня есть объект с именем UserSettings, который содержит список другого объекта с именем SettingsFolder. Этот объект в свою очередь имеет список настроек папки. Идея состоит в том, чтобы имитировать пользователя, у которого есть набор папок, а папки могут иметь подпапки.
Я пытаюсь написать лямбда-функцию, которая найдет данный объект при условии заданного идентификатора.
Прямо сейчас у меня есть 2 лямбды, одна из которых преобразует папку верхнего уровня в потоки и проверяет, существует ли Id и возвращает ли объект, а другая проверяет подпапку.
Для родительской папки Level
SettingsFolder settingsFolder = userSettings.getFolders().stream()
.filter(folder -> folder.getId().equals(UUID.fromString(form.getFolderId())))
.findAny()
.orElse(null);
для подфолдера
List<SettingsFolder> settingsFolders = userSettings.getFolders().stream()
.filter(folder -> folder.getFolders() != null)
.filter(folder -> folder.getFolders().size() > 0)
.collect(Collectors.toList());
SettingsFolder subFolder = settingsFolders.stream()
.flatMap(e -> e.getFolders().stream())
.filter(c -> c.getId() != null)
.filter(c -> c.getId().equals(UUID.fromString(form.getFolderId())))
.findAny()
.orElse(null);
Есть ли способ объединить 2 лямбды в одну, которая в идеале рекурсивно проверяет все эти списки?