CopyOnWriteArrayList 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
的线程安全变体 java.util.ArrayList
,其中 (add
、 set
等) 的所有可变操作都是通过创建基础数组的新副本来实现的。
[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
- 继承
- 属性
- 实现
注解
的线程安全变体 java.util.ArrayList
,其中 (add
、 set
等) 的所有可变操作都是通过创建基础数组的新副本来实现的。
这通常成本太高,但<>当遍历操作数量大大超过突变时,这可能比替代方法更有效<>,并且当你不能或不想同步遍历,但需要排除并发线程之间的干扰时,这非常有用。 “快照”样式迭代器方法使用对创建迭代器时数组状态的引用。 此数组在迭代器的生存期内永远不会更改,因此不可能干扰,并且保证迭代器不会引发 ConcurrentModificationException
。 迭代器不会反映自创建迭代器以来对列表的添加、删除或更改。 不支持迭代器本身 (remove
、 set
和 add
) 上的元素更改操作。 这些方法引发 UnsupportedOperationException
。
允许所有元素,包括 null
。
内存一致性影响:与其他并发集合一样,在将对象放入 i>happen-before</i> 操作之后,线程中的操作会从CopyOnWriteArrayList
另一个CopyOnWriteArrayList
<线程的 中访问或删除该元素。
此类是 Java 集合框架的成员。
在 1.5 中添加。
的 java.util.concurrent.CopyOnWriteArrayList
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。
构造函数
CopyOnWriteArrayList() |
创建一个空列表。 |
CopyOnWriteArrayList(ICollection) |
创建一个列表,其中包含指定集合的元素,其顺序与集合的迭代器返回的顺序一样。 |
CopyOnWriteArrayList(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
CopyOnWriteArrayList(Object[]) |
创建一个包含给定数组副本的列表。 |
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
IsEmpty |
|
JniIdentityHashCode |
的线程安全变体 |
JniPeerMembers |
的线程安全变体 |
PeerReference |
的线程安全变体 |
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) |
|
ContainsAll(ICollection) |
|
Dispose() |
的线程安全变体 |
Dispose(Boolean) |
的线程安全变体 |
Equals(Object) |
指示某个其他对象是否“等于”此对象。 (继承自 Object) |
ForEach(IConsumer) |
的线程安全变体 |
Get(Int32) |
要添加 |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
IndexOf(Object) |
要添加 |
IndexOf(Object, Int32) |
返回此列表中指定元素的第一个匹配项的索引,从 |
Iterator() |
按正确的顺序返回此列表中元素的迭代器。 |
JavaFinalize() |
当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。 (继承自 Object) |
LastIndexOf(Object) |
要添加 |
LastIndexOf(Object, Int32) |
返回此列表中指定元素的最后一个匹配项的索引,从 |
ListIterator() |
要添加 |
ListIterator(Int32) |
要添加 |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
Remove(Int32) |
移除此列表中指定位置处的元素。 |
Remove(Object) |
从此列表中删除指定元素的第一个匹配项(如果存在)。 |
RemoveAll(ICollection) |
从此列表中删除指定集合中包含的所有元素。 |
RemoveIf(IPredicate) |
的线程安全变体 |
ReplaceAll(IUnaryOperator) |
的线程安全变体 |
RetainAll(ICollection) |
仅保留此列表中包含在指定集合中的元素。 |
Set(Int32, Object) |
将位于此列表中指定位置的元素替换为指定的元素。 |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
Size() |
返回此列表中的元素数目。 |
Sort(IComparator) |
的线程安全变体 |
Spliterator() |
在此 |
SubList(Int32, Int32) |
返回 、非独占和 |
ToArray() |
返回一个数组,该数组包含此列表中所有元素 (从第一个元素到最后一个元素) 。 |
ToArray(Object[]) |
返回一个数组,该数组包含此列表中所有元素,其顺序 (从第一个元素到最后一个元素) ;返回数组的运行时类型为指定数组的运行时类型。 |
ToArray<T>() |
的线程安全变体 |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
的线程安全变体 |
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() |
的线程安全变体 |
IJavaPeerable.DisposeUnlessReferenced() |
的线程安全变体 |
IJavaPeerable.Finalized() |
的线程安全变体 |
IJavaPeerable.JniManagedPeerState |
的线程安全变体 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
的线程安全变体 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
的线程安全变体 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
的线程安全变体 |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
的线程安全变体 |
GetJniTypeName(IJavaPeerable) |
的线程安全变体 |
ToEnumerable(IIterable) |
的线程安全变体 |
ToEnumerable<T>(IIterable) |
的线程安全变体 |