2017-01-28 2 views
1

Недавно я понял, что вы можете дублировать массив как этоткак сравнить дублированные массивы

System.arraycopy(src,0,dup,0,src.length); 

Однако, несмотря на то, что оба массива являются одинаковыми, если сравнивать их с помощью

if(src==dup) 
    ...//print true 
else if(src!=dup) 
    ...//print false 

Это всегда будет выводить false. Нужно ли дублировать массив, который не изменяется с оригинальным, а также может правильно сравнить эти два?

+0

Вы ищете "глубокую копию". Есть несколько вопросов, которые могут быть связаны. http://stackoverflow.com/questions/1564832/how-do-i-do-a-deep-copy-of-a-2d-array-in-java – jdv

ответ

1

Как указал в своем ответе amahfouz, сравниваются ссылки двух разных массивов (так, как вы писали в своем посте).

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

Вы можете импорт java.util.Arrays, и сделать это:

if(Arrays.equals(src, dup)) 
    System.out.println("Equal"); 
else 
    System.out.println("Not Equal"); 
0

Тест равенства просто сравнивает ссылки, а не контент, поэтому он всегда возвращает false для двух разных ссылок на массивы.

+0

Использую ли цикл for для сравнения src [x] а затем [x]? – Spano

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