Загрузка файла ASP.NET MVC 3.0

/**
 * Clones the provided array
 * 
 * @param src
 * @return a new clone of the provided array
 */
public static int[][] cloneArray(int[][] src) {
    int length = src.length;
    int[][] target = new int[length][src[0].length];
    for (int i = 0; i < length; i++) {
        System.arraycopy(src[i], 0, target[i], 0, src[i].length);
    }
    return target;
}
blockquote>

Возможно ли изменить этот код для поддержки n-мерных массивов объектов?

Вам нужно будет поддерживать произвольные длины массивов и проверить, не является ли src и пункт назначения имеют одинаковые размеры, и вам также потребуется скопировать каждый элемент каждого массива рекурсивно , если объект также был массивом.

Прошло некоторое время с тех пор, как я опубликовано это, но я нашел хороший пример для создания n-мерного класса массива. Класс принимает нуль или более целых чисел в конструкторе, задавая соответствующий размер каждого измерения. Класс использует базовый flat массив Object[] и вычисляет индекс каждого элемента, используя размеры и массив множителей. (Это то, как массивы выполняются на языке программирования C.)

Копирование экземпляра NDimensionalArray было бы таким же простым, как копирование любого другого 2D-массива, хотя вам необходимо утверждать, что каждый объект NDimensionalArray имеет равные размеры. Это, вероятно, самый простой способ сделать это, поскольку нет рекурсии, и это делает представление и доступ намного проще.

802
задан Dai 9 July 2019 в 20:37
поделиться