-1

私は次の2次元配列を持っています:

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)

指定された 2 つの配列が互いに完全に等しい場合に true を返します。メソッドとは異なりequals(Object[],Object[])、このメソッドは、任意の深さのネストされた配列での使用に適しています。

2 つの配列参照は、両方が null の場合、または同じ数の要素を含む配列を参照し、2 つの配列内の対応する要素のすべてのペアが完全に等しい場合、完全に等しいと見なされます。

null の可能性がある 2 つの要素e1e2あり、次の条件のいずれかが満たされる場合、これらは完全に等しくなります。

  • e1 と e2 はどちらもオブジェクト参照型の配列であり、Arrays.deepEquals(e1, e2) は true を返します。
  • e1 と e2 は同じプリミティブ型の配列であり、Arrays.equals(e1, e2) を適切にオーバーロードすると true が返されます。
  • e1 == e2
  • e1.equals(e2) は true を返します。

この定義では、任意の深さで null 要素が許可されることに注意してください。

指定された配列のいずれかに、配列の 1 つ以上のレベルを介して直接的または間接的に要素として自身が含まれている場合、このメソッドの動作は未定義です。

于 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 に答える