Java Stream API比较数组中的字符串

Pen*_*ski 2 java string compare filter java-stream

如果有人能解释为什么我不能使用Java中的Stream API来比较数组中的String,我将很高兴.

我试图在第一个单词按字典顺序排在第二个单词之前仅过滤对.

String[] input = { "Apple", "Banana" };

    Arrays.stream(input)
            .filter( (a,b)-> a.compareTo(b)< 0 )
Run Code Online (Sandbox Code Playgroud)

看来Java不明白,"b"是一个字符串,但为什么呢?

Era*_*ran 6

filter期望a Predicate<T>(或更确切地说,Predicate<? super T>),元素T的类型Stream(String在您的情况下).

(a,b)-> a.compareTo(b)< 0不能解释为a Predicate<T>,因为Predicate's boolean test(T t)方法只需要一个参数,而不是两个.

filterStream单独应用于每个元素.你的没有配对Stream.