我的对象是一组配置文件,其中包含一组perfilmenunode
public class Perfil {
[...]
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "ID_PERFIL")
@LazyCollection(LazyCollectionOption.FALSE)
private List<PerfilMenunode> perfilMenunodes;
我想做的是这个函数,但只使用流
public PerfilMenunode darPerfilMenuNode(List<Perfil> perfiles) {
PerfilMenunode perfilMenunode = null;
for (Perfil perfil : perfiles) {
perfilMenunode = perfil.getPerfilMenunodes().stream().filter(pm -> pm.getMenunode().getNombreCorto().equals(Constante.MENU_ADMINPERFIL_NOMBRECORTO)).findFirst().orElse(null);
if(perfilMenunode!=null) {
return perfilMenunode;
}
}
return perfilMenunode;
}
有什么解决办法吗?
2条答案
按热度按时间bzzcjhmw1#
它将给出以下结果:
flatMap
```public PerfilMenunode darPerfilMenuNode(List perfiles) {
return perfiles.stream()
.map(Perfil::getPerfilMenunodes)
.flatMap(Collection::stream)
.filter(pm -> pm.getMenunode()
.getNombreCorto()
.equals(Constante.MENU_ADMINPERFIL_NOMBRECORTO)
)
.findFirst()
.orElse(null);
}
public PerfilMenunode darPerfilMenuNode(List perfiles) {
return perfiles.stream()
.mapMulti((Perfil perfil, Consumer consumer) -> {
perfil.getPerfilMenunodes().forEach(consumer::accept);
})
.filter(pm -> pm.getMenunode()
.getNombreCorto()
.equals(Constante.MENU_ADMINPERFIL_NOMBRECORTO)
)
.findFirst()
.orElse(null);
}
lrl1mhuk2#
我想它可以是这样的: