迭代谓词中的枚举?

时间:2016-08-05 21:44:00

标签: java

我试图在谓词中循环枚举以返回我需要的正确值。

这就是我要做的事情:

private Predicate<Item> isCorrectItem() {
    for (Thing thing : Thing.values()) {
        return item -> item.getId() == thing.getNumber();
    }
}

除了java想要在循环之外返回之外。在循环之后返回null不会对我有任何好处。我问,我该怎样做才能避免两次返回或者避免首先迭代枚举?如果没有,那是什么 我应该回来吗?

2 个答案:

答案 0 :(得分:0)

如果Itemnumber中匹配enum Thing时可以使用

,那么private Predicate<Item> isCorrectItem() { return item -> Arrays.stream(Thing.values()).anyMatch(thing -> thing.getNumber() == item.getId()); } 是正确的
(eg: 100-101)

答案 1 :(得分:0)

@ garnulf的答案(或@Tinaki's?)是正确的,但仅针对上下文,这是你在问题中可能的意思:

private Predicate<Item> isCorrectItem() {
    return item -> {
        for (Thing thing : Thing.values()) {
            if (item.getId() == thing.getNumber()) {
                return true;
            }
        }
        return false;
    };
}