Механизм автоматического расширения внутреннего массива в ArrayList работает следующим образом: ru.stackoverflow.com
- Когда нужно записать во внутренний массив ещё один элемент, а свободного места там нет, создаётся ещё один массив, в полтора раза больше размера внутреннего массива, плюс один элемент. ru.stackoverflow.com То есть (старый размер |* 1,5) + 1. ru.stackoverflow.com
- Все элементы из старого массива копируются в новый массив. ru.stackoverflow.com
- Новый массив сохраняется во внутренней переменной объекта ArrayList, старый массив объявляется мусором (на него перестают хранить ссылку). ru.stackoverflow.com
Размер нового массива определяется стратегией роста динамического массива. tproger.ru Например, в Java используется подход, при котором массив растёт медленнее: размер нового массива определяется по формуле (size |* 3) / 2 + 1. tproger.ru