java - 对象中列表的 Lambda
问题描述
我有一个名为 UserSettings 的对象,其中包含另一个名为 SettingsFolder 的对象的列表。该对象又具有 SettingsFolders 列表。这个想法是模仿拥有一组文件夹的用户,并且文件夹可以有子文件夹。我正在尝试编写一个 lambda 函数,该函数将找到提供给定 ID 的给定对象。
现在我有 2 个 lambda,一个将顶级文件夹转换为流并检查 Id 是否存在并返回对象,另一个检查子文件夹。
对于父级文件夹
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 个 lambda 组合成一个,理想情况下递归检查所有这些列表?
解决方案
推荐阅读
- python - python计算函数中的时间问题
- c++ - 对 Cxx.jl 提供的数据使用 Julia 的 unsafe_wrap 时出现问题
- excel - 在 VBA 函数上处理 IfError
- python - 将 Django 1.11 升级到 3.X/Python2.7 到 3.7
- ios - 删除项目uitableview swift 4的正确方法
- java - 循环通过方向
- sql - 我将如何获得三行的平均值。(SQL)
- typescript - 如何检查字符串是否为 NULL?
- javascript - 功能:选择 MySQL 并返回 JSON
- r - 使用ggplot2没有得到平滑的曲线