我有对象列表
List<FrameworkAdminLeftMenu> menu = getMenuFromDB();
每个FrameworkAdminLeftMenu
对象都有方法
public Set<FrameworkAdminLeftMenuCategories> getFrameworkAdminLeftMenuCategorieses() {
return this.frameworkAdminLeftMenuCategorieses;
}
和方法
public String getCssClassName() {
return this.cssClassName;
}
每个FrameworkAdminLeftMenuCategories
对象都有方法
public Integer getId() {
return this.id;
}
如何按getId(1)
过滤所有List和Set以获取FrameworkAdminLeftMenuCategories对象?
例如,像
List<FrameworkAdminLeftMenu> collect = menu.stream()
.filter(
f -> f
.getCssClassName()
.contains("adm-content")
)
.collect(Collectors.toList());
List<FrameworkAdminLeftMenuCategories> categs = collect
.stream()
.filter(
f -> f.
getFrameworkAdminLeftMenuCategorieses()
.stream()
.filter(c -> c.getId() == 1)
)
.collect(Collectors.toList());
答案 0 :(得分:1)
如果我正确理解了这个问题,您希望聚合所有集合中的类别并过滤具有正确ID的类别。在这种情况下,您应该使用flatMap
。
尝试这样的事情(显然未经测试):
List<FrameworkAdminLeftMenuCategories> categs = menu.stream()
.filter(f -> f.getCssClassName().contains("adm-content"))
.flatMap(f -> f.getFrameworkAdminLeftMenuCategorieses().stream())
.filter(c -> c.getId() == 1)
.collect(Collectors.toList());