Java:如何检查两个数组是否在同一个顺序?

时间:2016-03-07 03:19:42

标签: java arrays

例如,我有两个数组:

String [] arr1 ={"You", "book"};
String [] arr2 ={"Do", "You", "like","book" };

我想根据同一订单检查arr1是否与arr2匹配。如果arr1{"book", "You"},则arr1arr2不匹配。

好吧,我认为我的代码错了,但无论如何:

for (int i = 0; i<arr1.length; i++){
  for (int j=0; j<arr2.length; j++){
    if (arr1[i] != arr2[j]){
      return null;
    }
  }
}

但是,当我运行它时,即使我的nullarr1匹配,也始终返回arr2

3 个答案:

答案 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++;
}