Java流API比较数组中的字符串
如果有人能解释为什么我不能使用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.
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]