检查Java-8-Stream中两个元素的顺序

时间:2014-06-10 12:16:17

标签: java functional-programming java-8 java-stream

我想检查Java-8-Stream中两个元素的顺序。 我有这个Iterator-Solution:

public static boolean isBefore (A a1,
                                A a2,
                                Stream<A> as) {
    Iterator<A> it = as.iterator ();
    while (it.hasNext ()) {
        A a = it.next ();
        if (a == a1) {
            return true;
        } else if (a == a2) {
            return false;
        }
    }
    throw new IllegalArgumentException (
        a1 + " and + " a2 + " arent elements of the stream!");
}

是否有一个没有迭代器的解决方案,功能更强大/非命令式?

1 个答案:

答案 0 :(得分:3)

可能是这样的

as.filter (a -> (a==a1) || (a==a2)).findFirst ()

然后检查结果是a1还是a2还是空的。 对不起,我没有给出完整的解决方案,如果从我的智能手机上很难做到