在各種Java面試題中,想必大家是有見到過Vector這個類吧。一般都是說Vector是同步的這個點。
不過今天我要說的不是這個,而是Vector類中的capacity方法。
先看看下面這段關於Vector類中的capacity方法的代碼。
這段代碼中使用了Vector類的三個方法,add方法、size方法和capacity方法。add方法、size方法大家經常用就不多說了,那capacity方法是幹什麼的呢。
capacity單詞的意思是容量、容積。這個方法的意思就是獲取Vector類對象的容量。
拿上面代碼的執行結果來解釋一下吧。
我這裡實例化是使用的默認的構造方法,大家可以看一下源碼,默認的構造方法中,給這個對象設置的初始容量是10。那就是說這個Vector類對象(一個動態數組)初始化後可以放10個元素。
然後執行的結果就會輸出size是0(因為一個元素都沒有存入),而容量就是上面說的10。
這時候執行add方法存入一個元素,於是輸出的size就是1了,容量不會改變,還是10。
那如果存入的元素操作10個呢,就需要自動擴容了。就是上面的第三組自行結果了,當存入的元素操作之前的容量時,容量擴容到了20。
那這個擴容的規則是什麼呢。看一看源碼便知了。



其中capacityIncrement是擴容增量,public Vector(int initialCapacity, int capacityIncrement)這個構造方法可以指定,默認擴容增量為0.
從grow方法中我們可以看到,如果增量不為0,則每次容量不足時按照增量去增加容量。如果增量為0,則每次容量不足時會將當前容量翻倍。
今天的關於Vector類中的capacity方法的內容就到這裡了。