Java 两种不同尺寸的二维字符串数组的比较

Java 两种不同尺寸的二维字符串数组的比较,java,arrays,comparison,Java,Arrays,Comparison,我有以下二维数组: String[][] array1 = {{"hello", "hi"}{"bye", "two"}}; String[][] array2 = {{"hello", "hi", "three"}{"bye", "maybe", "third"}, {"3", "rd", "Element"}}; String[][] array3 = {{"hello", "hi"}{"bye", "two"}}; 如何检查它们是否具有相同的值(不同的大小)?谢谢 public静态布尔值

我有以下二维数组:

String[][] array1 = {{"hello", "hi"}{"bye", "two"}};
String[][] array2 = {{"hello", "hi", "three"}{"bye", "maybe", "third"}, {"3", "rd", "Element"}};
String[][] array3 = {{"hello", "hi"}{"bye", "two"}};
如何检查它们是否具有相同的值(不同的大小)?谢谢

public静态布尔值deepEquals(对象[]a1,
对象[]a2)

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

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

如果以下任一条件成立,则两个可能为空的元素
e1
e2
完全相等:

  • e1和e2都是对象引用类型的数组,而数组。deepEquals(e1,e2)将返回true
  • e1和e2是相同基元类型的数组,数组的适当重载.equals(e1,e2)将返回true
  • e1==e2
  • e1.equals(e2)将返回true
请注意,此定义允许任何深度的空元素

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


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

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;
}
公共布尔比较(字符串[][]a、字符串[][]b){
布尔结果=真;
int outer=数学最大值(a.长度,b.长度);
int inner=Math.max(a[0].length,b[0].length);

for(int i=0;i确实可以-这一切取决于您是试图为现实世界的问题解决此问题,还是试图将此问题作为智力练习解决。:-)