Java优雅的方法执行方法直到条件满足

时间:2015-02-10 12:09:12

标签: java conditional-statements

我有一个带有变量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的扑克手牌力量,如果我在我的可能组合列表中找到了同花顺,我不想检查四种类型,因为它们被殴打无论如何都要冲洗。然后我可以简单地将发现的同花顺作为该球员的最强组合返回。

2 个答案:

答案 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)