ArrayList 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
介面的可調整陣列實作 List 。
[Android.Runtime.Register("java/util/ArrayList", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public class ArrayList : Java.Util.AbstractList, IDisposable, Java.IO.ISerializable, Java.Lang.ICloneable, Java.Util.IRandomAccess
[<Android.Runtime.Register("java/util/ArrayList", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
type ArrayList = class
inherit AbstractList
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ICloneable
interface IList
interface ICollection
interface IIterable
interface ISequencedCollection
interface IRandomAccess
- 繼承
- 屬性
- 實作
備註
介面的可調整陣列實作 List 。 實作所有可選的列表操作,並允許所有元素,包括 null。 除了實作介面外 List ,這個類別還提供操作內部用來儲存清單陣列大小的方法。 (此類大致等價 Vector於 ,但不同步。)
size這些 、 isEmpty、 get、 setiteratorlistIterator 、 和 操作都是常數時間執行的。 此 add 操作以 攤還常數時間運行,也就是說,加入 n 個元素需要 O(n) 時間。 其他所有運算大致以線性時間進行。 與實作相比 LinkedList ,常數因子較低。
每個 ArrayList 實例都有 一個容量。 容量是用來儲存清單中元素的陣列大小。 它總是至少和清單大小一樣大。 隨著元素加入 ArrayList,其容量會自動增加。 成長政策的細節未具體說明,僅說明新增元素的攤還時間成本為固定不變。
應用程式可以在使用ArrayList操作加入大量元素前,先增加實例的容量ensureCapacity。 這可能減少增量重新分配的幅度。
<強>請注意,此實作並非同步。</強> 如果多個執行緒同時存取一個 ArrayList 實例,且至少有一個執行緒結構性修改了清單, 則必須 在外部同步。 (結構修改是指任何新增或刪除一個或多個元素,或明確調整支撐陣列大小的操作;僅僅設定元素的值並不構成結構性修改。)這通常是透過在某個自然封裝該清單的物件上同步來達成。
若不存在此類物件,則應使用該 Collections#synchronizedList Collections.synchronizedList 方法「包裝」該清單。 這最好在建立時進行,以避免意外不同步地存取清單:
List list = Collections.synchronizedList(new ArrayList(...));
此類別 #iterator() iterator 與 #listIterator(int) listIterator 方法回傳的迭代器為 <em>fail-fast</em>:若在迭代器建立後的任何時間對列表進行結構性修改,且非透過迭代器自身 ListIterator#remove() remove 或 ListIterator#add(Object) add 方法,迭代器將拋出 ConcurrentModificationException。 因此,面對並行修改時,迭代器能迅速且乾淨地失敗,而非冒著未來某個未知時間出現任意且非確定性行為的風險。
請注意,迭代器的失效快速行為無法保證,因為一般而言,在存在非同步的並行修改時,無法做出任何硬性保證。 失效快速迭代器則是以盡力而為的方式投擲 ConcurrentModificationException 。 因此,撰寫依賴此例外來確保正確性的程式是錯誤的: 迭代器的快速失效行為應該只用來偵測錯誤。
此類別是 Java 集合框架的成員。
在 1.2 版本中加入。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| ArrayList() |
構建一個初始容量為十的空清單。 |
| ArrayList(ICollection) |
構造一個包含指定集合元素的清單,依照集合迭代器回傳的順序排列。 |
| ArrayList(Int32) |
構造一個具有指定初始容量的空清單。 |
| ArrayList(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| First |
待補充 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| IsEmpty |
待補充 (繼承來源 AbstractCollection) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
介面的可調整陣列實作 |
| JniPeerMembers |
介面的可調整陣列實作 |
| Last |
待補充 |
| ModCount |
這份名單結構性 被修改的次數。 (繼承來源 AbstractList) |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
方法
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
介面的可調整陣列實作 |
| IJavaPeerable.Finalized() |
介面的可調整陣列實作 |
| IJavaPeerable.JniObjectReferenceControlBlock |
介面的可調整陣列實作 |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
介面的可調整陣列實作 |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
介面的可調整陣列實作 |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
介面的可調整陣列實作 |
| IJavaPeerable.UnregisterFromRuntime() |
介面的可調整陣列實作 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
介面的可調整陣列實作 |
| ToEnumerable(IIterable) |
回傳 和 IEnumerable ,會對 Java IIterable進行迭代,允許 |
| ToEnumerable<T>(IIterable) |
回傳 和 IEnumerable<T> ,該 在 Java IIterable上迭代,將每個元素 集結為 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |