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

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

我想检查 Java-8-Stream 中两个元素的顺序。 我有这个迭代器解决方案:

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!");
}

有没有更函数式/非命令式风格的没有迭代器的解决方案?

最佳答案

可能是这样的

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

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

关于java - 检查 Java-8-Stream 中两个元素的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140758/

相关文章:

java - java中随机唯一的字母数字字符串

java - K最近邻距离

java - Spring系统属性解析器定制:

java - JFrame:获得无边界的大小?

function - 在 Haskell 中,(+) 是一个函数,((+) 2) 是一个函数,((+) 2 3) 是 5。到底发生了什么?

java - 如何创建 List<T> 到 Map<String, T> 而不是 Map<String, List<T>>?

java - 为什么 Instant.now() 有时格式不同?

function - PL/SQL 将函数作为参数传递

performance - Haskell 是否适合长时间运行的应用程序?

java - 像 C++ 风格的函数指针一样使用 Java Lambdas?