ArrayList 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
介面的 Resizable-array 實作 List
。
[Android.Runtime.Register("java/util/ArrayList", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public class ArrayList : Java.Util.AbstractList, IDisposable, Java.Interop.IJavaPeerable, 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 IRandomAccess
- 繼承
- 屬性
- 實作
備註
介面的 Resizable-array 實作 List
。 實作所有選擇性清單作業,並允許所有專案,包括 null
。 除了實作 List
介面之外,這個類別還提供方法來操作內部用來儲存清單的陣列大小。 (這個類別大致相當於 Vector
,不同之處在于它未同步處理。)
size
、 isEmpty
、 get
、 set
、 iterator
和 listIterator
作業會以常數時間執行。 作業會 add
以 分攤常數時間執行,也就是新增 n 個元素需要 O (n) 時間。 所有其他作業都會以線性時間執行, (大致上說出) 。 相較于實作的 LinkedList
常數因數低。
每個 ArrayList
實例都有 容量。 容量是用來將元素儲存在清單中之陣列的大小。 它一律會與清單大小一樣大。 隨著元素新增至 ArrayList,其容量會自動成長。 除了新增元素具有固定分攤時間成本的事實之外,未指定成長原則的詳細資料。
應用程式可以使用 作業來新增大量元素 ensureCapacity
之前,先增加 實例的 ArrayList
容量。 這可能會減少累加式重新配置的數量。
<強 > 請注意,此實作不會同步處理。 </strong > 如果多個執行緒同時存取 ArrayList
實例,而且至少有一個執行緒以結構化方式修改清單, 則必須 在外部同步處理。 (結構修改是新增或刪除一或多個元素,或明確調整支援的陣列大小的任何作業;只設定元素的值不是結構化修改。) 這通常是藉由同步處理自然封裝清單的某些物件來完成。
如果沒有這類物件存在,清單應該使用 Collections#synchronizedList Collections.synchronizedList
方法來「包裝」。 這是在建立時的最佳作法,以防止意外未同步存取清單:
List list = Collections.synchronizedList(new ArrayList(...));
<p id=「fail-fast」 > 這個類別所傳回的 #iterator() iterator
反覆運算器是 #listIterator(int) listIterator
< em > fail-fast < /em > :如果在建立反覆運算器之後隨時以結構化方式修改清單,除了透過反覆運算器自己的 ListIterator#remove() remove
或 ListIterator#add(Object) add
方法以外,反覆運算器會擲回 ConcurrentModificationException
。 因此,在同時修改時,反覆運算器會快速且清楚地失敗,而不是在未來不具決定性的不具決定性行為上風險。
請注意,反覆運算器的失敗快速行為無法保證,一般而言,不可能在未同步處理並行修改的情況下進行任何硬式保證。 以最佳方式擲回 ConcurrentModificationException
快速反覆運算器。 因此,撰寫相依于此例外狀況的程式是否正確性是錯誤的: 反覆運算器的失敗快速行為應該只用來偵測錯誤。
這個類別是 JAVA Collections Framework的成員。
已在 1.2 中新增。
此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
建構函式
ArrayList() |
建構初始容量為 10 的空白清單。 |
ArrayList(ICollection) |
根據集合的反覆運算器傳回的順序,建構包含指定集合之專案的清單。 |
ArrayList(Int32) |
建構具有指定初始容量的空白清單。 |
ArrayList(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 標記法時使用的建構函式;由執行時間呼叫。 |
屬性
Class |
傳回這個 |
Handle |
基礎 Android 實例的控制碼。 (繼承來源 Object) |
IsEmpty |
要新增 (繼承來源 AbstractCollection) |
JniIdentityHashCode |
介面的 Resizable-array 實作 |
JniPeerMembers |
介面的 Resizable-array 實作 |
ModCount |
此清單的結構 修改次數。 (繼承來源 AbstractList) |
PeerReference |
介面的 Resizable-array 實作 |
ThresholdClass |
此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。 |
ThresholdType |
此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。 |
方法
Add(Int32, Object) |
要新增 (繼承來源 AbstractList) |
Add(Object) |
要新增 (繼承來源 AbstractCollection) |
AddAll(ICollection) |
要新增 (繼承來源 AbstractCollection) |
AddAll(Int32, ICollection) |
要新增 (繼承來源 AbstractList) |
Clear() |
要新增 (繼承來源 AbstractCollection) |
Clone() |
傳回這個 |
Contains(Object) |
要新增 (繼承來源 AbstractCollection) |
ContainsAll(ICollection) |
要新增 (繼承來源 AbstractCollection) |
Dispose() |
介面的 Resizable-array 實作 |
Dispose(Boolean) |
介面的 Resizable-array 實作 |
EnsureCapacity(Int32) |
視需要增加這個 |
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
ForEach(IConsumer) |
介面的 Resizable-array 實作 |
Get(Int32) |
傳回在此清單中指定位置的專案。 |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
IndexOf(Object) |
要新增 (繼承來源 AbstractList) |
Iterator() |
依適當順序傳回此清單中元素的反覆運算器。 (繼承來源 AbstractList) |
JavaFinalize() |
當垃圾收集判斷物件不再參考物件時,垃圾收集行程會在物件上呼叫。 (繼承來源 Object) |
LastIndexOf(Object) |
要新增 (繼承來源 AbstractList) |
ListIterator() |
要新增 (繼承來源 AbstractList) |
ListIterator(Int32) |
要新增 (繼承來源 AbstractList) |
Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
Remove(Int32) |
要新增 (繼承來源 AbstractList) |
Remove(Object) |
要新增 (繼承來源 AbstractCollection) |
RemoveAll(ICollection) |
要新增 (繼承來源 AbstractCollection) |
RemoveIf(IPredicate) |
介面的 Resizable-array 實作 |
RemoveRange(Int32, Int32) |
從這份清單中移除索引介於 、 包含和 |
ReplaceAll(IUnaryOperator) |
介面的 Resizable-array 實作 |
RetainAll(ICollection) |
要新增 (繼承來源 AbstractCollection) |
Set(Int32, Object) |
要新增 (繼承來源 AbstractList) |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
Size() |
傳回此清單中的專案數目。 |
Sort(IComparator) |
介面的 Resizable-array 實作 |
Spliterator() |
在此清單中建立 < em > 晚期繫結 < /em > 和 < em > 的 fast-fast < /em > |
SubList(Int32, Int32) |
要新增 (繼承來源 AbstractList) |
ToArray() |
要新增 (繼承來源 AbstractCollection) |
ToArray(Object[]) |
要新增 (繼承來源 AbstractCollection) |
ToArray<T>() |
介面的 Resizable-array 實作 |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
TrimToSize() |
修剪此 |
UnregisterFromRuntime() |
介面的 Resizable-array 實作 |
Wait() |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > 。 >< (繼承來源 Object) |
Wait(Int64) |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <> (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
介面的 Resizable-array 實作 |
IJavaPeerable.DisposeUnlessReferenced() |
介面的 Resizable-array 實作 |
IJavaPeerable.Finalized() |
介面的 Resizable-array 實作 |
IJavaPeerable.JniManagedPeerState |
介面的 Resizable-array 實作 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
介面的 Resizable-array 實作 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
介面的 Resizable-array 實作 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
介面的 Resizable-array 實作 |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
介面的 Resizable-array 實作 |
GetJniTypeName(IJavaPeerable) |
介面的 Resizable-array 實作 |
ToEnumerable(IIterable) |
介面的 Resizable-array 實作 |
ToEnumerable<T>(IIterable) |
介面的 Resizable-array 實作 |