當我使用java.util.Stack添加整數時,在調試模式下,我發現元素計數為 1 并且 elementdata 對象數組的長度為 10。一旦將數據推入堆棧,我看到堆棧對象指的是長度 1(即 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 為 1,elementData 長度為 10,但 stack.size() 仍然為 1。stack 對象是如何映射到 elementcount 的?
1 回答

MMMHUHU
TA貢獻1834條經驗 獲得超8個贊
這是正確的。因為在開始elementData
時,按照設計,創建的大小大于它包含的實際元素數量:在這種情況下為 10 個元素。
elementCount
跟蹤當前元素的數量,一旦這個數字大于 的大小elementData
,就會創建一個新的數組,并留有空間。每次填充當前數據數組時都會發生這種情況。
增加大小的算法取決于實現,一些可能的示例包括:創建一個大小是原始數組的兩倍的新數組,或者創建一個元素多 50% 的新數組。無論哪種方式,元素都會從原始數組復制到新數組。
添加回答
舉報
0/150
提交
取消