Лямбда для списка в объекте - PullRequest
0 голосов
/ 04 июня 2019

У меня есть объект с именем 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 лямбды в одну, которая в идеале рекурсивно проверяет все эти списки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...