Может ли JVM сама расширять размер ArrayList?

176
21 декабря 2018, 04:00

Инициализация:

ArrayList<Integer> M1 = new ArrayList<Integer>(400);
M1.addAll(M2);
Answer 1

По умолчанию, если используется пустой конструктор, создаётся список с дефолтным значением capacity, которое будет равно 10.

При добавлении 11 элемента, будет расширен список. В зависимости от JVM результирующий размер может быть разный. В Oracle jvm вроде на 50% растёт. Т.е, новый массив будет иметь размер 15.

Вы можете в конструктор передать размер начальный capacity. Тогда просто изначально внутри будет создан массив нужного размер (например, 400). Но при заполнении механизм расширения массива будет тем же самым, что и при дефолтном значении.

Если вопрос, конечно, про это.

Если вопрос в том, может ли jvm сама без изменений со стороны кода решить изменить размер списка, то нет, не может.

READ ALSO
Проблема с запуском камеры Android Studio

Проблема с запуском камеры Android Studio

Странная проблемаКамера запускается, все хорошо, изображение транслируется на экран

393
В чем ошибка в программе вычисления выражений? Вместо результата выводит nan

В чем ошибка в программе вычисления выражений? Вместо результата выводит nan

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

170
Преобразование типа фрагмента

Преобразование типа фрагмента

имеется следующий вопросУчу андроид программирование по книге, и там встретил следующий код:

171
Hibernate — почему не работает кэш первого уровня?

Hibernate — почему не работает кэш первого уровня?

Из статьи на хабре: Кеш первого уровня всегда привязан к объекту сессииHibernate всегда по умолчанию использует этот кеш и его нельзя отключить

157