定義
size、isEmpty、get、set、iterator和listIterator操作都以固定時間運行。add操作以分攤的固定時間運行,也就是說,添加n個元素需要O(n)時間。其他所有操作都以線性時間運行(大體上講)。與用于LinkedList實現的常數因子相比,此實現的常數因子較低。
每個ArrayList實例都有一個容量。該容量是指用來存儲列表元素的數組的大小。它總是至少等于列表的大小。随着向ArrayList中不斷添加元素,其容量也自動增長。并未指定增長策略的細節,因為這不隻是添加元素會帶來分攤固定時間開銷那樣簡單
在添加大量元素前,應用程序可以使用ensureCapacity操作來增加ArrayList實例的容量。這可以減少遞增式再分配的數量。注意,此實現不是同步的。如果多個線程同時訪問一個ArrayList實例,而其中至少一個線程從結構上修改了列表,那麼它必須保持外部同步。(結構上的修改是指任何添加或删除一個或多個元素的操作,或者顯式調整底層數組的大小;僅僅設置元素的值不是結構上的修改。)這一般通過對自然封裝該列表的對象進行同步操作來完成。如果不存在這樣的對象,則應該使用Collections.synchronizedList方法将該列表“包裝”起來。這最好在創建時完成,以防止意外對列表進行不同步的訪問:Listlist=Collections.synchronizedList(newArrayList(...));
此類的iterator和listIterator方法返回的叠代器是快速失敗的:在創建叠代器之後,除非通過叠代器自身的remove或add方法從結構上對列表進行修改,否則在任何時間以任何方式對列表進行修改,叠代器都會抛出ConcurrentModificationException。因此,面對并發的修改,叠代器很快就會完全失敗,而不是冒着在将來某個不确定時間發生任意不确定行為的風險。
注意,叠代器的快速失敗行為無法得到保證,因為一般來說,不可能對是否出現不同步并發修改做出任何硬性保證。快速失敗叠代器會盡最大努力抛出ConcurrentModificationException。因此,為提高這類叠代器的正确性而編寫一個依賴于此異常的程序是錯誤的做法:叠代器的快速失敗行為應該僅用于檢測bug。
常用的方法
booleanadd(Ee)
将指定的元素添加到此列表的尾部。
voidadd(intindex,Eelement)
将指定的元素插入此列表中的指定位置。
booleanaddAll(Collectionc)
按照指定collection的叠代器所返回的元素順序,将該collection中的所有元素添加到此列表的尾部。
booleanaddAll(intindex,Collectionc)
從指定的位置開始,将指定collection中的所有元素插入到此列表中。
voidclear()
移除此列表中的所有元素。
Objectclone()
返回此ArrayList實例的淺表副本。
booleancontains(Objecto)
如果此列表中包含指定的元素,則返回true。
voidensureCapacity(intminCapacity)
如有必要,增加此ArrayList實例的容量,以确保它至少能夠容納最小容量參數所指定的元素數。
Eget(intindex)
返回此列表中指定位置上的元素。
返回此列表中首次出現的指定元素的索引,或如果此列表不包含元素,則返回-1。
booleanisEmpty()
如果此列表中沒有元素,則返回true
intlastIndexOf(Objecto)
返回此列表中最後一次出現的指定元素的索引,或如果此列表不包含索引,則返回-1。
Eremove(intindex)
移除此列表中指定位置上的元素。
booleanremove(Objecto)
移除此列表中首次出現的指定元素(如果存在)。
protectedvoidremoveRange(intfromIndex,inttoIndex)
移除列表中索引在fromIndex(包括)和toIndex(不包括)之間的所有元素。
Eset(intindex,Eelement)
用指定的元素替代此列表中指定位置上的元素。
intsize()
返回此列表中的元素數。
按适當順序(從第一個到最後一個元素)返回包含此列表中所有元素的數組。
T[]toArray(T[]a)
按适當順序(從第一個到最後一個元素)返回包含此列表中所有元素的數組;返回數組的運行時類型是指定數組的運行時類型。
voidtrimToSize()
将此ArrayList實例的容量調整為列表的當前大小。



















