检查数组是否相等[重复]

问题描述 投票:1回答:4

此问题已经在这里有了答案:

如何检查两个数组中的所有元素是否相同?

如果所有值都相同,如何使它返回true

我尝试了不同的方法,但未能成功。

java arrays comparison equality
4个回答
4
投票

可能尝试这样的事情:

public static boolean checkIdentical(int[][] targetArray) {
    for (int i = 1; i < targetArray.length; i++) {
        for (int j = 0; j < targetArray[i].length; j++) {
            if (targetArray[i][j] != targetArray[0][j]) {
                return false;
            }
        }
    }
    return true;
}

注意:

如果数组可以具有这样的可变长度:

int[][] identicalArray = {{3, 3, 3, 4}, {3, 3, 3}};

然后条件将是:

if (targetArray[i].length != targetArray[0].length
        || targetArray[i][j] != targetArray[0][j]) {
    return false;
}

3
投票

您可以使用Arrays.equals()方法在一个循环中完成。

public static boolean checkIdentical(int[][] targetArray) {
    int[] prev = null;
    for (int[] a : targetArray) {

        if (prev != null && !Arrays.equals(a, prev))
            return false;

        prev = a;
    }
    return true;
}

需要导入java.util.Arrays。


1
投票

这里可能的解决方案:

public static void main(String[] args) {
    int[][] identicalArray = { { 3, 3, 3 }, { 3, 3, 3 } };
    int[][] nonIdenticalArray = { { 1, 2, 3 }, { 3, 2, 1 } };

    System.out.println("identicalArray all identical? " + checkIdentical(identicalArray));
    System.out.println("nonIdenticalArray all identical? " + checkIdentical(nonIdenticalArray));
}


public static boolean checkIdentical(int[][] targetArray) {
    int[] array1 = targetArray[0];
    for(int[] array : targetArray) {
        if (!Arrays.equals(array1, array))
            return false;
    }
    return true;
}

checkIdentical中会发生什么:

  • 我们在参数中收到二维targetArray
  • 我们将targetArray的第一个一维数组存储在array1中。这将是我们的参考数组,我们将与targetArray
  • 中的每个一维数组进行比较
  • 我们遍历targetArray中的每个一维数组并将其与array1进行比较
  • 如果一维数组与我们的参考数组array1不匹配,则返回false
  • 如果到达循环的末尾而没有遇到不相等的一维数组,则返回true

希望这会有所帮助。


0
投票

您可以使用Stream APIArrays#equals编写优美的1行Arrays#equals

checkIdentical
© www.soinside.com 2019 - 2024. All rights reserved.