CopyOnWriteArrayList的使用.docx_第1页
CopyOnWriteArrayList的使用.docx_第2页
CopyOnWriteArrayList的使用.docx_第3页
CopyOnWriteArrayList的使用.docx_第4页
CopyOnWriteArrayList的使用.docx_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java.util.concurrent类 CopyOnWriteArraySetjava.lang.Object java.util.AbstractCollection java.util.AbstractSet java.util.concurrent.CopyOnWriteArraySet类型参数:E- 此 collection 中所保存元素的类型所有已实现的接口:Serializable,Iterable,Collection,Setpublic class CopyOnWriteArraySet extends AbstractSet implements Serializable 对其所有操作使用内部CopyOnWriteArrayList的Set。因此,它共享以下相同的基本属性: 它最适合于具有以下特征的应用程序:set 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突。 它是线程安全的。 因为通常需要复制整个基础数组,所以可变操作(add、set和remove等等)的开销很大。 迭代器不支持可变remove操作。 使用迭代器进行遍历的速度很快,并且不会与其他线程发生冲突。在构造迭代器时,迭代器依赖于不变的数组快照。示例用法。以下代码使用一个写时复制(copy-on-write)的 set,以维护在状态更新时执行某项操作的一组 Handler 对象。 class Handler void handle(); . class X private final CopyOnWriteArraySet handlers = new CopyOnWriteArraySet(); public void addHandler(Handler h) handlers.add(h); private long internalState; private synchronized void changeState() internalState = .; public void update() changeState(); for (Handler handler : handlers) handler.handle(); 此类是Java Collections Framework的成员。从以下版本开始:1.5另请参见:CopyOnWriteArrayList,序列化表格构造方法摘要CopyOnWriteArraySet()创建一个空 set。CopyOnWriteArraySet(Collectionc)创建一个包含指定 collection 所有元素的 set。方法摘要booleanadd(Ee)如果指定元素并不存在于此 set 中,则添加它。booleanaddAll(Collectionc)如果此 set 中没有指定 collection 中的所有元素,则将它们都添加到此 set 中。voidclear()移除此 set 中的所有元素。booleancontains(Objecto)如果此 set 包含指定元素,则返回true。booleancontainsAll(Collectionc)如果此 set 包含指定 collection 的所有元素,则返回true。booleanequals(Objecto)比较指定对象与此 set 的相等性。booleanisEmpty()如果此 set 不包含任何元素,则返回true。Iteratoriterator()返回按照元素添加顺序在此 set 中包含的元素上进行迭代的迭代器。booleanremove(Objecto)如果指定元素存在于此 set 中,则将其移除。booleanremoveAll(Collectionc)移除此 set 中包含在指定 collection 中的所有元素。booleanretainAll(Collectionc)仅保留此 set 中那些包含在指定 collection 中的元素。intsize()返回此 set 中的元素数目。ObjecttoArray()返回一个包含此 set 所有元素的数组。 TtoArray(Ta)返回一个包含此 set 所有元素的数组;返回数组的运行时类型是指定数组的类型。从类 java.util.AbstractSet继承的方法hashCode从类 java.util.AbstractCollection继承的方法toString从类 java.lang.Object继承的方法clone,finalize,getClass,notify,notifyAll,wait,wait,wait构造方法详细信息CopyOnWriteArraySetpublic CopyOnWriteArraySet()创建一个空 set。CopyOnWriteArraySetpublic CopyOnWriteArraySet(Collectionc)创建一个包含指定 collection 所有元素的 set。参数:c- 最初包含元素的 collection抛出:NullPointerException- 如果指定 collection 为 null方法详细信息sizepublic int size()返回此 set 中的元素数目。指定者:接口Collection中的size指定者:接口Set中的size指定者:类AbstractCollection中的size返回:此 set 中的元素数isEmptypublic boolean isEmpty()如果此 set 不包含任何元素,则返回true。指定者:接口Collection中的isEmpty指定者:接口Set中的isEmpty覆盖:类AbstractCollection中的isEmpty返回:如果此 set 不包含任何元素,则返回truecontainspublic boolean contains(Objecto)如果此 set 包含指定元素,则返回true。更确切地讲,当且仅当此 set 包含满足(o=null ? e=null : o.equals(e)的元素e时,返回true。指定者:接口Collection中的contains指定者:接口Set中的contains覆盖:类AbstractCollection中的contains参数:o- 将测试其是否存在于此 set 中的元素返回:如果此 set 包含指定元素,则返回truetoArraypublic Object toArray()返回一个包含此 set 所有元素的数组。如果此 set 对其迭代器返回的元素的顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。不维护对返回数组的任何引用,因而它将是“安全的”。(换句话说,即使 set 受到数组的支持,此方法也必须分配一个新的数组)。因此,调用这可以随意修改返回的数组。此方法充当基于数组的 API 与基于 collection 的 API 之间的桥梁。指定者:接口Collection中的toArray指定者:接口Set中的toArray覆盖:类AbstractCollection中的toArray返回:包含此 set 所有元素的数组toArraypublic T toArray(Ta)返回一个包含此 set 所有元素的数组;返回数组的运行时类型是指定数组的类型。如果指定的数组能容纳该 set,则将 set 返回此处。否则,将分配一个具有指定数组的运行时类型和此 set 大小的新数组。如果指定的数组能容纳 set,并有剩余的空间(即数组的元素比 set 多),那么会将接 set 尾部的元素设置为null。(仅当调用者知道此 set 不包含任何 null 元素时,才可使用此方法来确定此 set 的长度。)如果此 set 对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。像toArray()方法一样,此方法充当基于数组 的 API 与基于 collection 的 API 之间的桥梁。更进一步说,此方法允许对输出数组的运行时类型进行精确控制,在某些情况下,可以用来节省分配开销。假定x是只包含字符串的一个已知 set。以下代码用来将该 set 转储到一个新分配的String数组: String y = x.toArray(new String0);注意,toArray(new Object0)和toArray()在功能上是相同的。指定者:接口Collection中的toArray指定者:接口Set中的toArray覆盖:类AbstractCollection中的toArray参数:存储此- set 元素的数组(如果该数组足够大);否则为此分配一个具有相同运行时类型的新数组返回:包含此 set 所有元素的数组抛出:ArrayStoreException- 如果指定数组的运行时类型不是此 set 每个元素的运行时类型的超类型NullPointerException- 如果指定数组为 nullclearpublic void clear()移除此 set 中的所有元素。在此调用返回之后,set 将为空。指定者:接口Collection中的clear指定者:接口Set中的clear覆盖:类AbstractCollection中的clearremovepublic boolean remove(Objecto)如果指定元素存在于此 set 中,则将其移除。更确切地讲,如果此 set 中包含满足(o=null ? e=null : o.equals(e)的元素e,则移除它。如果此 set 包含指定元素(或者此 set 由于调用而发生更改),则返回true。(调用返回后,则此 set 便不再包含这样的元素。)指定者:接口Collection中的remove指定者:接口Set中的remove覆盖:类AbstractCollection中的remove参数:o- 要从此 set 移除的对象(如果存在)返回:如果此 set 包含指定元素,则返回trueaddpublic boolean add(Ee)如果指定元素并不存在于此 set 中,则添加它。更确切地讲,如果此 set 不包含满足(e=null ? e2=null : e.equals(e2)的元素e2,则将指定元素e添加到此 set 中。如果此 set 已经包含这样的元素,则该调用不改变此 set 并返回false。指定者:接口Collection中的add指定者:接口Set中的add覆盖:类AbstractCollection中的add参数:e- 要添加到此 set 的元素返回:如果此 set 并未包含指定元素,则返回truecontainsAllpublic boolean containsAll(Collectionc)如果此 set 包含指定 collection 的所有元素,则返回true。如果指定的 collection 也是一个 set,那么当该 collection 是此 set 的子集时,此方法返回true。指定者:接口Collection中的containsAll指定者:接口Set中的containsAll覆盖:类AbstractCollection中的containsAll参数:c- 将被检查是否存在于此 set 的 collection返回:如果此 set 包含指定 collection 的所有元素,则返回true抛出:NullPointerException- 如果指定 collection 为 null另请参见:contains(Object)addAllpublic boolean addAll(Collectionc)如果此 set 中没有指定 collection 中的所有元素,则将它们都添加到此 set 中。如果指定的 collection 也是一个 set,则addAll操作会实际修改此 set,从而它的值是两个 set 的一个并集。如果指定 collection 在操作过程中被修改,则此操作的行为是不确定的。指定者:接口Collection中的addAll指定者:接口Set中的addAll覆盖:类AbstractCollection中的addAll参数:c- 包含将添加到此 set 中的元素的 collection返回:如果此 set 由于调用而发生更改,则返回true抛出:NullPointerException- 如果指定 collection 为 null另请参见:add(Object)removeAllpublic boolean removeAll(Collectionc)移除此 set 中包含在指定 collection 中的所有元素。如果指定的 collection 也是一个 set,则此操作会实际修改此 set,从而其值是两个 set 的一个不对称差集。指定者:接口Collection中的removeAll指定者:接口Set中的removeAll覆盖:类AbstractSet中的removeAll参数:c- 包含将从此 set 中移除的元素的 collection返回:如果此 set 由于调用而发生更改,则返回true抛出:ClassCastException- 如果此 set 的元素的类与指定 collection 不兼容(可选)NullPointerException- 如果此 set 包含一个 null 元素并且指定 collection 不允许使用 null 元素(可选),或者指定 collection 为 null另请参见:remove(Object)retainAllpublic boolean retainAll(Collectionc)仅保留此 set 中那些包含在指定 collection 中的元素。换句话说,移除此 set 中所有未包含在指定 collection 中的元素。如果指定的 collection 也是一个 set,则此操作会实际修改此 set,这样其值是两个 set 的一个交集。指定者:接口Collection中的retainAll指定者:接口Set中的retainAll覆盖:类AbstractCollection中的retainAll参数:c- 包含保留在此 set 中的元素的 collection返回:如果此 set 由于调用而发生更改,则返回true抛出:ClassCastException- 如果此 set 的元素的类与指定 collection 不兼容(可选)NullPointerException- 如果此 set 包含一个 null 元素并且指定 collection 不允许使用 null 元素(可选),或者指定 collection 为 null另请参见:remove(O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论