Сравнение массива и ArrayList (примеры)

143
31 декабря 2020, 19:40

Добавление элемента в конец массива

ArrayList

list.add(str);

Массив
Невозможно выполнить данное действие (написано на ресурсе)
Разве нельзя сделать так:

int[] array = new int[10];
array[9] = 20; // добавил последний элемент в конец массива, 9 индекс == 10 элемент

Вставка элемента в середину массива

ArrayList

list.add(15, str);

Массив

Невозможно выполнить данное действие (написано на ресурсе)
Разве нельзя сделать вот так:

 int[] array = new int[10];
 array[5] = 10; // вставил элемент в середину массива 

Вставка элемента в начало массива

ArrayList

list.add(0, str);

Массив

Невозможно выполнить данное действие (написано на ресурсе)


Разве нельзя сделать вот так:

 int[] array = new int[10];
 array[0] = 2; // вставил в начало массива
 array[1] = 4;
 array[2] = 6;
 array[3] = 8;
 array[4] = 10;
 array[0] = 24; // Вставил элемент в начало массива, но только (перезаписал значение)

Объясните по подробнее пожалуйста почему данные операции с массивами производить нельзя, заранее спасибо за помощь!

Answer 1

Почему же нельзя? Можно, но только руками - увеличили длину массива (в Java явно создав новый массив и переписав данные), сдвинули часть массива, чтобы освободить место для нового элемента, записали новый элемент, вот и вставка готова.

Массив - простая и эффективная структура данных. Нужна легкая вставка? Используйте ArrayList, накладные расходы побольше, но часть работы от Вас спрятана.

Как, по-вашему, компилятор должен понять, что операция

 array[5] = 10; 

должна в одном месте заменить элемент, а в другом - вставить новый с раздвижкой?

READ ALSO
SpringBootApplication не работает в полной версии tomcat

SpringBootApplication не работает в полной версии tomcat

выполняю первый guide с сайта Spring: "Building a RESTful Web Service" с https://springio/guides/gs/rest-service/#scratch

107
Передать команду в jsp форме JAVA

Передать команду в jsp форме JAVA

Из заполненой jsp формы, данные передаются на сервер и формируется строка запроса:site/cmd?name=John&surname=Doe&passport=AB123456&phone=098-765-4321&account=1234567890

139
Spring Boot AJAX

Spring Boot AJAX

Делаю небольшой проект на Spring BootПередаю в контроллер дату, сервис считает кол-во дней между ними и отдает json

113
Проблемма при построение Dagger2

Проблемма при построение Dagger2

Пытаюсь ставить clean architor

127