2012-04-19 160 views
-1

我有以下的2維陣列:兩個2D串陣列的比較具有不同尺寸

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

如何檢查,它們是否具有相同的值或不(大小不同)?由於

回答

1

Arrays.deepEquals()

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

返回true如果兩個指定數組深感彼此相等。與equals(Object[],Object[])方法不同,此方法適用於任意深度的嵌套數組。

兩個數組引用被認爲是深等於如果兩者都爲空,或者如果它們是指包含相同數目的元件的陣列和在兩個陣列元件的所有相應對深感相等。

兩個可能null元素e1e2是深層相等如果任一下列條件成立:

  • e1和e2是對象引用類型的數組,並且Arrays.deepEquals(E1,E2)將返回true
  • e1和e2是相同基元類型的數組,並且Arrays.equals(e1,e2)的適當重載將返回true。
  • E1 == E2
  • e1.equals(E2)將返回true。

請注意,此定義支持任意深度的null元素。

如果任一指​​定的陣列的包含自身作爲元素直接或間接地通過陣列中的一個或多個級別的,這種方法的行爲是未定義的。

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; 
} 
+0

當然可以 - 一切都取決於你是否正在試圖解決這個問題,對於現實世界中的問題,或者試圖解決這個問題作爲一個智力鍛鍊。 :-) – 2012-04-19 22:02:12