例如,我有两个数组:
String [] arr1 ={"You", "book"};
String [] arr2 ={"Do", "You", "like","book" };
我想根据同一订单检查arr1
是否与arr2
匹配。如果arr1
为{"book", "You"}
,则arr1
与arr2
不匹配。
好吧,我认为我的代码错了,但无论如何:
for (int i = 0; i<arr1.length; i++){
for (int j=0; j<arr2.length; j++){
if (arr1[i] != arr2[j]){
return null;
}
}
}
但是,当我运行它时,即使我的null
与arr1
匹配,也始终返回arr2
。
答案 0 :(得分:1)
您可以过滤数组1中不在数组2中的元素。此结果应与数组1匹配。
public static boolean withinAndInOrder(String[] a, String[] b) {
return Arrays.equals(a, Arrays.stream(b)
.parallel()
.filter(element -> Arrays.binarySearch(a, element) >= 0)
.toArray());
}
答案 1 :(得分:0)
看到我感觉这是某种任务,我只会提出一些暗示。
您目前正在迭代两个阵列。这意味着您将每个项目与另一个列表中的每个项目进行比较。例如:
String[] arr1 = { "a", "b" }
String[] arr2 = { "a", "b" }
由于你的两个循环,你需要比较&#34; a&#34; (arr1[0]
)与&#34; a&#34;和&#34; b&#34; (arr2[0]
和arr2[1]
)。你真正想要的是一个循环,你将两个数组中的相同索引相互比较。
作为额外提示;你可能会完成循环,但没有查看两个数组中的每个元素。
另外,旁注;使用!=
表示字符串并不是最好的主意(请参阅this question)。
答案 2 :(得分:-1)
var i=0;
while(arr1[i] == arr2[i]){ // or while(arr[i].equals(arr2[i]))
code to put if where equal
i++;
}