Добавление элемента в непустой массив

436
31 августа 2017, 18:44

Как в непустой двумерный массив int[][] arr добавить элемент?

Массив был создан следующим образом:

int[][] arr = new int[][]{{1, 2, 3, 4}, {1, 2, 3}};
Answer 1

Если требуется изменять размер коллекции, то лучше выбрать другую структуру данных. Если же прямо хочется с массивами - то можно нарезать еще 3 массива и условно "приклеить" их с исходному снизу, справа и с угла, написав класс - обертку, содержащий 4 поля-массива и геттер/сеттер, которые по значению входящего индекса будут определять, с каким из физических массивов работать. это очень по-ООП-шному, инкапсуляция / сокрытие реализации и все такое :) Можно сделать даже, чтобы эти классы-обертки можно было вкладывать друг в друга - таким образом мы получаем абстракцию бесконечно расширяемого массива с доступом за О(1), физическая реализация которого будет разбросана по памяти / куче, но кого это волнует (кроме буквоедов, говорящих про промахи кеша и прочую низкоуровневую прелесть), главное же ООП и абстракция :)

Answer 2

допустим : есть дв-ый массив

    int[][] mas = new int[3][3];

заполним его случайными числами :

    for (int i = 0; i < mas.length; i++) {
        for (int j = 0; j < mas[i].length; j++) {
            mas[i][j] = (int) (Math.random() * 9 + 1);
        }
    }

выведем в консоль весь массив:

    for (int i = 0; i < mas.length; i++) {
        for (int j = 0; j < mas[i].length; j++) {
            System.out.print(mas[i][j] + "\t");
        }
        System.out.println();
    }

если у вас где то так, то конечно в массив невозможно что то еще запихнуть, так как массив задается изначально его размер и его размер не изменяется динамически.

ну а если есть дв-ый массив:

    int[][] mas = new int[3][3];

и вы вручную туда можете засовывать что захотите: например:

    mas[0][0] = 5;
    mas[1][0] = 6;
    mas[2][0] = 10;
    mas[1][1] = 5;
    mas[1][2] = 7;
    mas[2][0] = 6;

выводим:

  for (int i = 0; i < mas.length; i++) {
        for (int j = 0; j < mas[i].length; j++) {
            System.out.print(mas[i][j] + "\t");
        }
        System.out.println();
    }

получаем :

5 0 0
6 5 7
6 0 0

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

READ ALSO
Проверка на существование записи в sqlite

Проверка на существование записи в sqlite

Проверяю существует ли запись в бд но все время получаю false (0 с курсора)Проверяю так:

358
Замена содержимого в ArrayAdapter

Замена содержимого в ArrayAdapter

Есть файл arraysxml, в котором объявлены 2 массива строк:

354
Импорт из другого пакета Java

Импорт из другого пакета Java

Понимаю, что вопрос скорее глупыйНужно создать два класса в разных пакетах и импортировать метод из одного класса в другой

455
В чём отличие isBlank vs isEmpty?

В чём отличие isBlank vs isEmpty?

В чём отличие isBlank vs isEmpty?

381