我需要根据需要按顺序执行的3个检查来选择第一个结果 . 即如果没有符合标准1的对象,那么我们寻找满足标准2的任何对象,依此类推 . 这是我的工作代码
MyClass result = myObjects.stream()
.filter(s -> s.meetsCriterion1())
.findFirst()
.orElseGet(() -> {
return myObjects.stream()
.filter(s -> s.meetsCriterion2())
.findFirst()
.orElseGet(() -> {
return myObjects.stream()
.filter(s -> s.meetsCriterion3())
.findFirst()
.orElseGet(() -> {
return null;
});
});
});
我们能改进这段代码吗?我不确定是否有办法重用第一个流来评估所有标准 .
1 回答
我会将标准列表与逻辑分开: