如果有人能解释为什么我不能使用 Java 中的 Stream API 比较数组中的字符串,我会很高兴。
当第一个单词按字典顺序排列在第二个单词之前时,我尝试仅过滤对。
String[] input = { "Apple", "Banana" };
Arrays.stream(input)
.filter( (a,b)-> a.compareTo(b)< 0 )
Java 似乎不明白,“b”是一个字符串,但为什么呢?
最佳答案
filter
预计 Predicate<T>
(或者更准确地说, Predicate<? super T>
),其中 T
是 Stream
的类型元素( String
在你的情况下)。
(a,b)-> a.compareTo(b)< 0
不能解释为 Predicate<T>
,自 Predicate
的boolean test(T t)
方法只接受一个参数,而不是两个。
filter
应用于 Stream
的每个元素分别地。您的 Stream
中没有对.
关于Java Stream API 比较数组中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46754905/