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