1、是否允許空 允許
2、是否允許重複資料 允許
3、是否有序,有序的意思是讀取資料的順序和存放資料的順序是否一致 有序
4、是否執行緒安全 非執行緒安全
arraylist是基於陣列的乙個實現,elementdata就是底層的陣列,底層預設陣列大小10個
注意arraylist裡面的,size是按照呼叫add、remove方法的次數進行自增或者自減的,所以add了乙個null進入arraylist,size也會加1 ,可疊加
擴容**
public void ensurecapacity(int mincapacity)
}
看到擴容的時候把元素組大小先乘以3,再除以2,最後加1,大約1.5倍
arraylist的優缺點
從上面的幾個過程總結一下arraylist的優缺點。arraylist的優點如下:
1、arraylist底層以陣列實現,是一種隨機訪問模式,再加上它實現了randomaccess介面,因此查詢也就是get的時候非常快
2、arraylist在順序新增乙個元素的時候非常方便,只是往陣列裡面新增了乙個元素而已
不過arraylist的缺點也十分明顯:複製copyof
1、刪除元素的時候,涉及到一次元素複製,如果要複製的元素很多,那麼就會比較耗費效能
2、插入元素的時候,涉及到一次元素複製,如果要複製的元素很多,那麼就會比較耗費效能
因此,arraylist比較適合順序新增、隨機訪問的場景。
collections.synchronizedlist 這個安全的陣列當然也可以用 vector 和arraylist百分之90相似
差別在於增長因子
vector可以指定增長因子,如果該增長因子指定了,那麼擴容的時候會每次新的陣列大小會在原陣列的大小基礎上加上增長因子;如果不指定增長因子,那麼就給原陣列大小*2,源**是這樣的
int newcapacity = oldcapacity + ((capacityincrement > 0) ?
capacityincrement : oldcapacity);
ArrayList原始碼理解
與linkedlist原始碼理解放在一起查閱,效果更好 對隊成員變數的分析,可以知道arraylist的資料結構 對add 方法的分析,可以得知arraylist新增資料的效率不高 對get 方法的分析,可以看出arraylist查詢的效率非常高 對remove 方法的分析,可以了解到arrayli...
ArrayList 原始碼理解
擴容機制 原始碼如下 mincapacity 最小需要的容量,也就是說儲存資料的陣列最小需要mincapacity所指定小長度。private void ensureexplicitcapacity int mincapacity private void grow int mincapacity ...
Arraylist 學習筆記
比如collection介面的設計一樣,可能會定義乙個容器需要的相關方法,但是他在提供乙個abstractcollection的抽象方法,把相關能通用的方法進行封裝實現,後面的容器直接繼承abstractcollection,將需要重寫的方法實現,其他abstractcollection實現的方法就...