Ответ
Поведение зависит от конструктора, которым был создан Vector.
1. По умолчанию (удвоение):
Если Vector создан с начальной емкостью (capacity) 10 и без указания capacityIncrement, то при добавлении 11-го элемента его емкость удвоится (станет 20).
Vector<Integer> vec = new Vector<>(10); // capacity=10, capacityIncrement=0
for (int i = 0; i < 10; i++) vec.add(i); // size=10, capacity=10
vec.add(10); // Триггер увеличения. Новая capacity = 10 * 2 = 20
2. С заданным приращением:
Если Vector создан с указанием capacityIncrement, емкость увеличится на эту величину.
Vector<Integer> vec = new Vector<>(10, 5); // capacity=10, increment=5
for (int i = 0; i < 10; i++) vec.add(i); // size=10, capacity=10
vec.add(10); // Триггер увеличения. Новая capacity = 10 + 5 = 15
Принцип работы:
- Внутри
Vectorиспользует массив для хранения элементов. - Поле
capacityIncrementопределяет, на сколько увеличивать массив при переполнении. Если оно равно0, применяется стратегия удвоения. - Увеличение происходит автоматически при вызове методов добавления (
add,addElement), когдаsizeстановится равенcapacity.
Сравнение с ArrayList: ArrayList всегда увеличивает емкость примерно в 1.5 раза (старая емкость + старая емкость >> 1), и у него нет параметра capacityIncrement.