我有一个带有变量的方法 listElement
我用 null 初始化并想在某个列表(方法输入)上执行最多 9 个不同的方法,直到找到一个我可以覆盖的值 listElement
与。
如果它不再为空,我不想执行其余的方法。如果所有方法都找不到要覆盖的变量,我想返回 null。
示例:
public XXX findListElement(List<XXX> listsOfxxx) {
XXX listElement = null;
listElement = firstMethod(listsOfxxx);
listElement = secondMethod(listsOfxxx);
listElement = thirdMethod(listsOfxxx);
listElement = fourthMethod(listsOfxxx);
listElement = fifthMethod(listsOfxxx);
...
return listElement;
}
如果第一个方法已经找到我的变量,我该如何跳过其余的方法? 这背后的想法是检查从同花顺到高牌的扑克手牌强度,如果我在我的可能组合列表中发现同花顺,我不想检查同花四,因为它们被同花顺打败了反正。然后我可以简单地将找到的同花顺作为该玩家的最强组合返回。
最佳答案
您应该使用 Streams API。
return Stream.<Function<List<Xxx>, Xxx>>of(this::firstMethod,
this::secondMethod,
this::thirdMethod)
.map(f -> f.apply(listOfXxx))
.filter(Objects::nonNull)
.findFirst().orElse(null);
关于Java优雅的执行方法直到条件满足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431306/