我有一个带有变量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;
}
如果第一个方法已经找到我的变量,我如何跳过其余的方法? 这背后的想法是检查从Straight Flush到High Card的扑克手牌力量,如果我在我的可能组合列表中找到了同花顺,我不想检查四种类型,因为它们被殴打无论如何都要冲洗。然后我可以简单地将发现的同花顺作为该球员的最强组合返回。
答案 0 :(得分:4)
您应该使用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);
答案 1 :(得分:3)