检查数组是否相等

时间:2019-10-30 07:04:44

标签: java arrays comparison equality

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

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

我尝试了不同的方法,但没有成功。

4 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:4)

您可以使用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。

答案 2 :(得分: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

希望这会有所帮助。

答案 3 :(得分:0)

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

public static boolean checkIdentical(int[][] targetArray) {
    return Stream.of(targetArray).allMatch(elm -> Arrays.equals(targetArray[0], elm));
}