比较两个数组,找到数组在JAVA中不再匹配的索引

时间:2016-04-17 15:10:20

标签: java arrays int

我有以下问题。 我需要实现一个方法来比较两个数组,并找到给定数组的元素不匹配的第一个索引。 我尝试过以下代码,但它有点弱:

public int UnmatchedElementsOnIndex(int[] x, int[] y) {

    for (int i = 0; i < x.length; i++) {
        for (int j = 0; j < y.length; j++) {
            if (x[i] == y[j]) {
                // value is contained in both arrays
            }
            // otherwise not
        }
        return 0;
    }

4 个答案:

答案 0 :(得分:0)

试试这个:

public int UnmatchedElementsOnIndex(int[] x, int[] y) {

        // Also check for the list length
        if(x.length < y.length)
          return x.length;
        else if(y.length < x.length)
          return y.length;

        for (int i = 0; i < x.length; i++) {
              if(x[i] != y[i]) return i;
            }
            return -1;
        }

如果两个数组中的所有元素相同,则返回-1,否则当数组在同一位置不包含相同元素时返回第一个索引。

答案 1 :(得分:0)

您只需要扫描数组中的每个元素。然后确定哪个元素不匹配。以下是实现此目的的一种方法。

public int UnmatchedElementsOnIndex(int[] x, int[] y) {
    int index=-1;
    //lengths should be equal. If not, we can't compare arrays
    if(x.length!=y.length){
        return -2;
    }   
    for (int i = 0; i < x.length; i++) {
        if (x[i] != y[i]) {
            index=i;
            break;
        }
    }
    //returns -1, if all the elements are equal
    return index;
}

答案 2 :(得分:0)

首先:有几种方法可以做到。

假设您要比较两个int [],您可以像这样缩短代码:

    public static int getDifferIndex(int[] a, int[] b) {
        int i = 0;
        while (i < a.length && i < b.length && a[i] == b[i++]);
        return i;
    }

在此处试试:https://ideone.com/zl0Hji

假设您需要一个更通用的解决方案,该解决方案适用于实现boolean equals(Object)的对象,您可以将其重写为以下内容:

    public static int getDifferIndex(Object[] a, Object[] b) {
        int i = 0;
        while (i < a.length && i < b.length && a[i].equals(b[i++]));
        return i;
    }

答案 3 :(得分:-1)

public int UnmatchedElementsOnIndex(int[] x, int[] y) {
    for (int i = 0; i < x.length && i < y.length; i++) {
        if (x[i] != y[i]) {
            return i;
        }
        return -1;
    }
}