Глубоко клонируя многомерные массивы в Java …? [дубликат]

Вы должны удалить

com.ExecuteReader();

из своего кода, эта строка бесполезна, так как вы не назначаете ссылку для считывателя (в следующей строке вы получаете ссылку и правильно назначаете ее в своем коде. переменная «читатель»)

7
задан JasonMArcher 8 July 2015 в 04:32
поделиться

5 ответов

Вы могли бы хотеть проверить java.util. Arrays.deepEquals и java.util. Методы Arrays.equals.

Я боящийся equals метод для объектов массива выполняет мелкое сравнение и не делает правильно (по крайней мере, для этого случая), сравнивают внутреннее Character массивы.

3
ответ дан 6 December 2019 в 10:04
поделиться

равняется (), метод на массивах является тем, объявленным в Классе объекта. Это означает, что будет только возвращать true, если объект будет тем же. Тем же это означает не то же в СОДЕРЖАНИИ, но то же в ПАМЯТИ. Таким образом равняется () на Ваших массивах, никогда не будет возвращать true, поскольку Вы копируете структуру в памяти.

3
ответ дан 6 December 2019 в 10:04
поделиться

Тест для равенства original.equals (клон); выкладывает ложь. Почему?:|

поэтому Вы создаете новый массив с new Character[original.length][];.

Arrays.deepEquals(original,clone) должен возвратить true.

1
ответ дан 6 December 2019 в 10:04
поделиться

Я нашел этот ответ для клонирования многомерных массивов на jGuru:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(this);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
Object deepCopy = ois.readObject();
-1
ответ дан 6 December 2019 в 10:04
поделиться
/**Creates an independent copy(clone) of the boolean array.
 * @param array The array to be cloned.
 * @return An independent 'deep' structure clone of the array.
 */
public static boolean[][] clone2DArray(boolean[][] array) {
    int rows=array.length ;
    //int rowIs=array[0].length ;

    //clone the 'shallow' structure of array
    boolean[][] newArray =(boolean[][]) array.clone();
    //clone the 'deep' structure of array
    for(int row=0;row<rows;row++){
        newArray[row]=(boolean[]) array[row].clone();
    }

    return newArray;
}
13
ответ дан 6 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: