Нет, ensureCapacity
не меняет логический размер ArrayList
- он меняет емкость , то есть размер, которого может достичь список до того, как ему понадобятся следующие. скопировать значения.
Вы должны очень хорошо понимать разницу между логическим размером (то есть все значения в диапазоне [0, size)
доступны, и добавление нового элемента добавит его по индексу size
) и емкостью, которая больше детали реализации на самом деле - это размер резервного массива, используемого для хранения.
Вызов ensureCapacity
должен только когда-либо иметь какое-либо значение с точки зрения производительности (избегая чрезмерного копирования) - это не влияет на логическую модель того, что в списке, если вы понимаете, что я имею в виду.
РЕДАКТИРОВАТЬ: Звучит так, как будто вы хотите что-то вроде ensureSize()
метода, который может выглядеть примерно так:
public static void ensureSize(ArrayList<?> list, int size) {
// Prevent excessive copying while we're adding
list.ensureCapacity(size);
while (list.size() < size) {
list.add(null);
}
}