Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java流API比较数组中的字符串_Java_String_Filter_Compare_Java Stream - Fatal编程技术网

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

Java流API比较数组中的字符串,java,string,filter,compare,java-stream,Java,String,Filter,Compare,Java Stream,如果有人能解释为什么我不能使用Java中的流API比较数组中的字符串,我会很高兴 当第一个单词在第二个单词之前时,我尝试只过滤成对的单词 String[] input = { "Apple", "Banana" }; Arrays.stream(input) .filter( (a,b)-> a.compareTo(b)< 0 ) String[]输入={“苹果”,“香蕉”}; Arrays.stream(输入) .filter((a,b)->a.

如果有人能解释为什么我不能使用Java中的流API比较数组中的字符串,我会很高兴

当第一个单词在第二个单词之前时,我尝试只过滤成对的单词

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

    Arrays.stream(input)
            .filter( (a,b)-> a.compareTo(b)< 0 )
String[]输入={“苹果”,“香蕉”};
Arrays.stream(输入)
.filter((a,b)->a.compareTo(b)<0)

Java似乎不明白“b”是一个字符串,但为什么呢?

filter
需要一个
谓词(或者更准确地说,
谓词如果您想比较对,您需要自己以某种方式“生成”对,例如

IntStream indexes =
    IntStream.range(0, input.length-1)
                // Via i you implicitly have access to the pair
                // (input[i], input[i+1])
        .filter(i -> input[i].compareTo(input[i+1]) < 0);
IntStream索引=
IntStream.range(0,input.length-1)
//通过i,您可以隐式访问该对
//(输入[i],输入[i+1])
.filter(i->input[i].compareTo(input[i+1])<0);
这将按字典顺序在元素的后续元素之前生成元素的索引


您可以在此流上执行进一步的操作;但并不完全清楚您希望得到什么结果。

如果您有更多对进行比较,这可能会有所帮助:

public class Main {

    public static void main(String[] args) {

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

        Arrays.stream(input)
                   .filter(x -> x[0].compareTo(x[1]) < 0)
                   .forEach(x -> System.out.println(Arrays.toString(x)));

    }

}

希望这能帮你解决问题。

转念一想,这可能正是他想要的。是的,这可能是误解……但他写道要过滤掉“配对”,所以我认为这些对是从更大的东西中筛选出来的,他只能处理一对中的情况。无论如何,这是我的第一个答案,你之前写的是一个宝贵的提示,谢谢;)因为溪流不会变魔术。
[Apple, Banana]
[Banana, Orange]