-1

我有以下二维数组:

String[][] array1 = {{"hello", "hi"}{"bye", "two"}};
String[][] array2 = {{"hello", "hi", "three"}{"bye", "maybe", "third"}, {"3", "rd", "Element"}};
String[][] array3 = {{"hello", "hi"}{"bye", "two"}};

我如何检查它们是否具有相同的值(不同的大小)?谢谢

4

2 回答 2

1

Arrays.deepEquals()

public static boolean deepEquals(Object[] a1, Object[] a2)

如果两个指定的数组彼此深度相等,则返回 true。与该equals(Object[],Object[])方法不同,该方法适用于任意深度的嵌套数组。

如果两个数组引用都为空,或者它们引用的数组包含相同数量的元素并且两个数组中所有对应的元素对都非常相等,则认为两个数组引用是深度相等的。

e1如果满足以下任何条件,则两个可能为 null 的元素e2是完全相等的:

  • e1 和 e2 都是对象引用类型的数组,并且 Arrays.deepEquals(e1, e2) 将返回 true
  • e1 和 e2 是相同原始类型的数组,并且 Arrays.equals(e1, e2) 的适当重载将返回 true。
  • e1 == e2
  • e1.equals(e2) 将返回 true。

请注意,此定义允许任何深度的空元素。

如果任一指​​定的数组直接或通过一个或多个数组级别间接将自身包含为元素,则此方法的行为是未定义的。

于 2012-04-19T20:57:33.090 回答
0

您还可以创建自己的方法:

public boolean compare(String[][] a, String[][] b){
    boolean result = true;
    int outer = Math.max(a.length, b.length);
    int inner = Math.max(a[0].length, b[0].length);

    for(int i = 0; i<outer; i++){
        for(int j = 0; j<inner; j++){
            if(i < a.length && i < b.length && j < a[0].length && j < b[0].length){
                if(!a[i][j].equals(b[i][j])){
                    result = false;
                }
            }
        }
    }
    return result;
}
于 2012-04-19T21:31:43.360 回答