Share via


CopyOnWriteArrayList 类

定义

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

[Android.Runtime.Register("java/util/concurrent/CopyOnWriteArrayList", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public class CopyOnWriteArrayList : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable, Java.Util.IList, Java.Util.IRandomAccess
[<Android.Runtime.Register("java/util/concurrent/CopyOnWriteArrayList", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
type CopyOnWriteArrayList = class
    inherit Object
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ICloneable
    interface IList
    interface ICollection
    interface IIterable
    interface IRandomAccess
继承
CopyOnWriteArrayList
属性
实现

注解

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

这通常成本太高,但<>当遍历操作数量大大超过突变时,这可能比替代方法更有效<>,并且当你不能或不想同步遍历,但需要排除并发线程之间的干扰时,这非常有用。 “快照”样式迭代器方法使用对创建迭代器时数组状态的引用。 此数组在迭代器的生存期内永远不会更改,因此不可能干扰,并且保证迭代器不会引发 ConcurrentModificationException。 迭代器不会反映自创建迭代器以来对列表的添加、删除或更改。 不支持迭代器本身 (removesetadd) 上的元素更改操作。 这些方法引发 UnsupportedOperationException

允许所有元素,包括 null

内存一致性影响:与其他并发集合一样,在将对象放入 i>happen-before</i> 操作之后,线程中的操作会从CopyOnWriteArrayList另一个CopyOnWriteArrayList<线程的 中访问或删除该元素。

此类是 Java 集合框架的成员。

在 1.5 中添加。

java.util.concurrent.CopyOnWriteArrayListJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

构造函数

CopyOnWriteArrayList()

创建一个空列表。

CopyOnWriteArrayList(ICollection)

创建一个列表,其中包含指定集合的元素,其顺序与集合的迭代器返回的顺序一样。

CopyOnWriteArrayList(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

CopyOnWriteArrayList(Object[])

创建一个包含给定数组副本的列表。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
IsEmpty

true如果此列表不包含任何元素,则返回 。

JniIdentityHashCode

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
JniPeerMembers

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

PeerReference

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

方法

Add(Int32, Object)

在此列表中的指定位置插入指定的元素。

Add(Object)

将指定的元素追加到此列表的末尾。

AddAll(ICollection)

按照指定集合的迭代器返回元素的顺序,将指定集合中的所有元素追加到此列表的末尾。

AddAll(Int32, ICollection)

从指定位置开始,将指定集合中的所有元素插入到此列表中。

AddAllAbsent(ICollection)

按照指定集合的迭代器返回的顺序,将指定集合中尚未包含的所有元素追加到此列表的末尾。

AddIfAbsent(Object)

追加元素(如果不存在)。

Clear()

从此列表中删除所有元素。

Clone()

返回此列表的浅表副本。

Contains(Object)

true如果此列表包含指定的元素,则返回 。

ContainsAll(ICollection)

true如果此列表包含指定集合的所有元素,则返回 。

Dispose()

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
Dispose(Boolean)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
Equals(Object)

指示某个其他对象是否“等于”此对象。

(继承自 Object)
ForEach(IConsumer)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

Get(Int32)

要添加

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
IndexOf(Object)

要添加

IndexOf(Object, Int32)

返回此列表中指定元素的第一个匹配项的索引,从 index向前搜索;如果未找到该元素,则返回 -1。

Iterator()

按正确的顺序返回此列表中元素的迭代器。

JavaFinalize()

当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。

(继承自 Object)
LastIndexOf(Object)

要添加

LastIndexOf(Object, Int32)

返回此列表中指定元素的最后一个匹配项的索引,从 index向后搜索;如果未找到该元素,则返回 -1。

ListIterator()

要添加

ListIterator(Int32)

要添加

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Remove(Int32)

移除此列表中指定位置处的元素。

Remove(Object)

从此列表中删除指定元素的第一个匹配项(如果存在)。

RemoveAll(ICollection)

从此列表中删除指定集合中包含的所有元素。

RemoveIf(IPredicate)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

ReplaceAll(IUnaryOperator)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

RetainAll(ICollection)

仅保留此列表中包含在指定集合中的元素。

Set(Int32, Object)

将位于此列表中指定位置的元素替换为指定的元素。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
Size()

返回此列表中的元素数目。

Sort(IComparator)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

Spliterator()

在此 Spliterator 列表中的元素上返回 。

SubList(Int32, Int32)

返回 、非独占和 toIndex(非独占)之间fromIndex此列表部分的视图。

ToArray()

返回一个数组,该数组包含此列表中所有元素 (从第一个元素到最后一个元素) 。

ToArray(Object[])

返回一个数组,该数组包含此列表中所有元素,其顺序 (从第一个元素到最后一个元素) ;返回数组的运行时类型为指定数组的运行时类型。

ToArray<T>()

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
Wait()

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
IJavaPeerable.Finalized()

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

GetJniTypeName(IJavaPeerable)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

ToEnumerable(IIterable)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

ToEnumerable<T>(IIterable)

的线程安全变体 java.util.ArrayList ,其中 (addset等) 的所有可变操作都是通过创建基础数组的新副本来实现的。

适用于