Количество элементов и данные элемента имеют разные значения в java.util.Vector - PullRequest
0 голосов
/ 01 февраля 2019

Когда я использую java.util.Stack для добавления целого числа, в режиме отладки я нахожу, что количество элементов равно единице, а массив объектов elementdata имеет длину 10. Как только данные помещаются в стек, я вижу объект стекассылается на длину один (т.е. elementcount) вместо длины массива elementdata.

Stack<Integer> stack = new Stack<Integer>();
stack.push(5);
//Inside the Vector class, i see that add element uses:-
public synchronized void addElement(E obj) {
        modCount++;
        ensureCapacityHelper(elementCount + 1);
        elementData[elementCount++] = obj;
}

elementcount равен единице, а elementData length равен 10, но stack.size () по-прежнему равен единице.Как объект стека отображается на elementcount?

1 Ответ

0 голосов
/ 01 февраля 2019

Это верно.Потому что в начале elementData по проекту создается с размером, превышающим фактическое количество элементов, которое оно содержит: в данном случае 10 элементов.

elementCount отслеживает текущее количество элементов,и как только это число превысит размер elementData, будет создан новый массив, где будет свободное место.Это происходит каждый раз, когда текущий массив данных заполняется.

Алгоритм увеличения размера зависит от реализации, некоторые возможные примеры включают в себя: создание нового массива с удвоенным размером оригинала или создание нового массива сНа 50% больше элементов.В любом случае, элементы копируются из исходного массива в новый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...