arraylist是一種基於陣列實現的集合類,也是平常經常使用到的集合。其特性歸納如下:特性值
是否順序儲存
順序是否可重複儲存
可以是否可儲存null
可以是否執行緒安全
非執行緒安全
屬性說明
elementdata
arraylist是基於陣列實現的,這就是arraylist用於儲存
size
儲存元素的總數
threshold
臨界值,當元素數量大於thresholdthreshold,會進行擴容操作
public
arraylist(int initialcapacity)
public
arraylist()
和hashmap一樣,在新建arrzylist時可以選擇是否指定容量,同樣建議在可以的情況下,盡量指定乙個容量,有利於提高效率。
先看一下
public
boolean
add(e e)
作用是新增乙個元素到列表的最後面,先看一下第一行**:
private
void
ensurecapacityinternal(int mincapacity)
ensureexplicitcapacity(mincapacity);
}
在容量不夠的情況下,對存放元素的陣列進行擴容,每次新增乙個長度。因為陣列的長度是固定的,所以使用 arrays.copyof,新建乙個長度是目前1.5倍的陣列,並且複製原陣列的資料。
arraylist可以在指定的索引位置,新增元素:
public
void add(int
index, e element)
先判斷指定的索引是否有越界,和add(e element)還不一樣的地方是第4行,還需要對於index之後的元素都複製到index+1的位置。
get方法很簡單,先判斷指定的索引是否有越界,在直接返回指定索引的資料。因此arrzylist的get方法時間複雜度是1,效率很高。
public e get(int
index)
也很簡單,取出之前的元素,設定新的元素,時間複雜度也是1。
public e set(int
index, e element)
public e remove(int
index)
也是使用了上面提高的陣列複製,把index之後的所有元素,複製到index-1,相當於向前挪了一位。
1.arraylist是基於陣列實現的乙個集合類
2.arraylist的get,set,add(element,e)的效率都很高,時間複雜為o(1)
3.arraylist的remove,add(int index, e element),時間複雜為o(n)。如果有大量的這2個的操作,可以使用linkedlist
4.arraylist是非執行緒安全的
Java集合 ArrayList集合
以陣列實現。節約空間,但是陣列有容量限制。超出限制時會增加50 容量,用system.arraycopy 複製到新的陣列,因此最好能給出陣列大小的預估值。預設第一次插入元素時建立大小為10 的陣列。按照陣列下標來訪問元素 get i set i,e 的效能很高,這是陣列的基本優勢。直接在陣列末尾加入...
Java基礎 集合ArrayList
集合類 物件導向類,對事物的描述都是通過物件實現。為方便對多個物件進行操作,必須對多個物件進行儲存,因此需要容器類。容器類特點是長度可變。stringbuilder只能存放字串。int等陣列雖能存放自定義型別,但長度固定。arraylist是一種特殊的資料型別,泛型。arraylist 構造乙個初始...
Java學習筆記 集合Arraylist
arraylist集合 arraylist list new arraylist 可以使object型也可以是類。通過例子說明arraylist的使用方法 arraylist list new arraylist list.add i 向list中新增乙個值object型的i值,list.add i...