gpt4 book ai didi

java - 学习 Java 8 流

转载 作者:行者123 更新时间:2023-12-02 08:40:18 26 4
gpt4 key购买 nike

我有一个现有代码,我希望将其转换为 Java8 提供的流:

    for(Person details: modList){

if (null != details &&null!=details.getPersonChild()) {
Child mod= details.getPersonChild();

if (mod.isAB() ||
mod.isBC() ||
mod.isCD() ||
mod.idDE() ||
mod.isEF()) {
childeligible = true;
break;
}
}
}

到目前为止我已经完成了:

return details.stream()
.filter( p -> null != p && null != p.getPersonChild())
.map(Person::getPersonChild)
.anyMatch(mi -> (mod.isAB() || mod.isBC() || mod.isCD() || mod.idDE() || mod.isEF()));

有没有更优化的方法来实现这一点

感谢您的帮助

最佳答案

我可能会这样写

return Details.stream()
.filter(p -> null != p)
.map(Person::getPersonChild)
.filter(pc -> null != pc)
.anyMatch(pc -> pc.isABCEDF());

其中 isABCDEF 检查所有条件。

no that method cannot be added

或者您可以添加此方法,并对其所检查的内容进行更好的描述。

 .anyMatch(pc -> isABCEDF(pc));

如果您不想添加方法,您可以按照您的建议进行操作

.anyMatch(c -> c.isAB() || c.isBC() || c.isCD() || c.idDE() ||  c.isEF());

正如 @WanderNauta 指出的,如果您觉得更清楚,您还可以使用 .filter(Objects::nonNull) 进行 null 检查。

关于java - 学习 Java 8 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42024782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com