2012-04-19 8 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[]), этот метод подходит для использования с вложенными массивами произвольной глубины.

Две ссылки на массивы считаются глубоко равными, если оба они являются нулевыми, или если они относятся к массивам, которые содержат одинаковое количество элементов, и все соответствующие пары элементов в двух массивах являются глубоко равными.

Два возможно нулевые элементы e1 и e2 глубоко равны, если какой-либо из следующих условий:

  • e1 и e2 являются массивы объектных ссылок типов, и Arrays.deepEquals (e1, e2) возвращает true
  • e1 и e2 - это массивы того же примитивного типа, и соответствующая перегрузка массивов Arrays.equals (e1, e2) вернет true.
  • e1 == e2
  • e1.equals (e2) вернет true.

Обратите внимание, что это определение допускает нулевые элементы на любой глубине.

Если какой-либо из указанных массивов содержит себя как элементы прямо или косвенно через один или несколько уровней массивов, поведение этого метода не определено.

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

Конечно может - все зависит от того, что вы пытаетесь решить эту проблему для реальных проблем, или пытаетесь решить эту проблему, как интеллектуальные упражнения. :-) –

Смежные вопросы