關於ArrayList和Vector的自動增長

2021-06-04 23:27:26 字數 538 閱讀 1031

集合中常用的兩個類,arraylist和vector是兩個先進先出的堆疊。他們乙個是非同步,乙個是同步。new arraylist()或new vector()預設都是10個長度,vector構造器中也可以構造乙個適當的步長,如:vector(int initialcapacity, int capacityincrement) 

arraylist自增大約一半的長度。可從原始碼中得知

int newcapacity = (oldcapacity * 3)/2 + 1;

如果有10個長度,當填滿後,自動增加到16個長度,幾乎是一半。

vector自增大約是一倍的長度。

int newcapacity = (capacityincrement > 0) ?

(oldcapacity + capacityincrement) : (oldcapacity * 2);

如果設定有步長,則增長到原長度+步長的容量,如果沒有設定步長,則增加到原長度*2。幾乎是一倍的長度

關於arrayList的add和addall

如果連線2個arraylist,比如a和b,如果直接寫a.addall b 有可能連線不上,最常見的方法是定義乙個新的arraylist c,再c.addall a 和c.addall b arraylist是乙個實現可變長陣列,繼承abstractlist類,實現所有的list介面,還實現了ran...

關於arrayList的add和addall

花了一周時間,重構了系統中最重要的一段下發列印邏輯的 理清了各型別間的呼叫關係,得意之際,測試告訴 資料異常了,花了5個小時的測試,終於發現了問題,用錯了arraylist的addall方法,下面列舉下add和addall方法。arraylist是乙個實現可變長陣列,繼承abstractlist類,...

Array List和ArrayList的區別與

定義 public abstract class array icloneable,ilist,icollection,ienumerable,istructuralcomparable,istructuraequatable 陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且賦值與修改元...