所有类


java.util.concurrent
类 CopyOnWriteArrayList<E>

java.lang.Object
  继承者 java.util.concurrent.CopyOnWriteArrayList<E>
类型参数:
E - 此 collection 中保持的元素类型
所有已实现的接口:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess

public class CopyOnWriteArrayList<E>
   
   
   
   
   
extends Object
implements List<E>, RandomAccess, Cloneable, Serializable

ArrayList 的一个线程安全的变体,其中所有可变操作(添加、设置,等等)都是通过对基础数组进行一次新的复制来实现的。

这一般需要很大的开销,但是当遍历操作的数量大大超过可变操作的数量时,这种方法可能比其他替代方法 有效。在不能或不想进行同步遍历,但又需要从并发线程中排除冲突时,它也很有用。“快照”风格的迭代器方法在创建迭代器时使用了对数组状态的引用。此数组在迭代器的生存期内绝不会更改,因此不可能发生冲突,并且迭代器保证不会抛出 ConcurrentModificationException。自创建迭代器以后,迭代器就不会反映列表的添加、移除或者更改。不支持迭代器上更改元素的操作(移除、设置和添加)。这些方法将抛出 UnsupportedOperationException

此类是 Java Collections Framework 的成员。

从以下版本开始:
1.5
另请参见:
序列化表格

构造方法摘要
CopyOnWriteArrayList()
          创建一个空列表。
CopyOnWriteArrayList(Collection<? extends E> c)
          按照 Collection 的迭代器返回元素的顺序,创建一个包含指定 Collection 的元素的列表。
CopyOnWriteArrayList(E[] toCopyIn)
          创建一个新的 CopyOnWriteArrayList,它保持给定数组的副本。
 
方法摘要
 boolean add(E element)
          将指定元素追加到此列表的尾部。
 void add(int index, E element)
          在此列表中指定位置上插入指定元素。
 boolean addAll(Collection<? extends E> c)
          按照指定 Collection 的迭代器返回元素的顺序,将指定 Collection 中的所有元素追加此列表的尾部。
 boolean addAll(int index, Collection<? extends E> c)
          从指定位置开始,将指定 Collection 的所有元素插入此列表。
 int addAllAbsent(Collection<? extends E> c)
          按照指定 Collection 的迭代器返回元素的顺序,将指定 Collection 中尚未包含在此列表中的所有元素追加列表的尾部。
 boolean addIfAbsent(E element)
          追加元素(如果不存在)。
 void clear()
          从此列表中移除所有元素。
 Object clone()
          返回此列表的浅表复制。
 boolean contains(Object elem)
          如果此列表包含指定的元素,则返回 true
 boolean containsAll(Collection<?> c)
          如果此 collection 包含指定 collection 的所有元素,则返回 ture。
 boolean equals(Object o)
          比较指定对象与此列表是否相等。
 E get(int index)
          返回此列表中指定位置上的元素。
 int hashCode()
          返回此列表的哈希码值。
 int indexOf(E elem, int index)
          从 index 处开始,搜索第一次出现的给定参数,用 equals 方法进行相等性测试。
 int indexOf(Object elem)
          搜索第一次出现的给定参数,用 equals 方法进行相等性测试。
 boolean isEmpty()
          测试此列表是否没有任何元素。
 Iterator<E> iterator()
          返回此 collection 中包含的元素上的 Iterator。
 int lastIndexOf(E elem, int index)
          从指定索引处开始向后搜索指定的对象,并返回其索引。
 int lastIndexOf(Object elem)
          返回指定的对象在列表中最后一次出现的位置索引。
 ListIterator<E> listIterator()
          返回此列表中元素的 Iterator(按适当顺序)。
 ListIterator<E> listIterator(int index)
          从列表中指定位置开始,返回此列表中的元素的 ListIterator(按适当顺序)。
 E remove(int index)
          移除此列表中指定位置上的元素。
 boolean remove(Object o)
          从此列表中移除指定元素的一个实例,如果存在的话(可选操作)。
 boolean removeAll(Collection<?> c)
          从此 Collection 中移除所有包含在指定 Collection 中的元素。
 boolean retainAll(Collection<?> c)
          只保留此 Collection 中包含在指定 Collection 中的元素(可选操作)。
 E set(int index, E element)
          用指定的元素替代此列表中指定位置上的元素。
 int size()
          返回此列表中的元素数。
 List<E> subList(int fromIndex, int toIndex)
          返回此列表中 fromIndex(包括)和 toIndex(不包括)之间部分的视图。
 Object[] toArray()
          返回一个按照正确的顺序包含此列表中所有元素的数组。
<T> T[]
toArray(T[] a)
          返回一个按照正确的顺序包含此列表所有元素的数组。
 String toString()
          返回此 Collection 的字符串表示形式,其中包含每个元素的字符串表示形式。
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

CopyOnWriteArrayList

public CopyOnWriteArrayList()
创建一个空列表。


CopyOnWriteArrayList

public CopyOnWriteArrayList(Collection<? extends E> c)
按照 Collection 的迭代器返回元素的顺序,创建一个包含指定 Collection 的元素的列表。

参数:
c - 最初保持元素的 collection

CopyOnWriteArrayList

public CopyOnWriteArrayList(E[] toCopyIn)
创建一个新的 CopyOnWriteArrayList,它保持给定数组的副本。

参数:
toCopyIn - 数组(将此数组的副本用作内部数组)
方法详细信息

size

public int size()
返回此列表中的元素数。

指定者:
接口 Collection<E> 中的 size
指定者:
接口 List<E> 中的 size
返回:
此列表中的元素数。

isEmpty

public boolean isEmpty()
测试此列表是否没有任何元素。

指定者:
接口 Collection<E> 中的 isEmpty
指定者:
接口 List<E> 中的 isEmpty
返回:
如果此列表没有任何元素,则返回 true;否则返回 false

contains

public boolean contains(Object elem)
如果此列表包含指定的元素,则返回 true

指定者:
接口 Collection<E> 中的 contains
指定者:
接口 List<E> 中的 contains
参数:
elem - 测试该元素是否在此列表中存在。
返回:
如果指定的元素存在,则返回 true;否则返回 false

indexOf

public int indexOf(Object elem)
搜索第一次出现的给定参数,用 equals 方法进行相等性测试。

指定者:
接口 List<E> 中的 indexOf
参数:
elem - 一个对象。
返回:
列表中第一次出现该参数的位置索引;如果未找到对象,则返回 -1
另请参见:
Object.equals(Object)

indexOf

public int indexOf(E elem,
                   int index)
index 处开始,搜索第一次出现的给定参数,用 equals 方法进行相等性测试。

参数:
elem - 一个对象。
index - 搜索起始处的索引。
返回:
在列表中的 index 处或其后的位置上,第一次出现该对象参数的位置索引;如果未找到对象,则返回 -1
另请参见:
Object.equals(Object)

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部