E
-元素举行此集合中的类型
public class CopyOnWriteArrayList<E> extends Object implements List<E>, RandomAccess, Cloneable, Serializable
ArrayList
(
add
,
set
,等等)都是通过底层数组的一个新版本的实现。
这通常是昂贵的,但可能比选择当遍历操作大大超过突变更高效,是有用的当你不能或不想同步遍历,但需要排除并发线程间的干扰。“快照”样式的迭代器方法在创建迭代器时使用指向数组的状态的引用。迭代器的一生在这阵从未改变,所以干扰是不可能的,迭代器是保证不丢ConcurrentModificationException
。迭代器不会反映增加,删除,或更改列表迭代器创建以来。元变更操作对迭代器本身(remove
,set
,和add
)不支持。这些方法把UnsupportedOperationException
。
所有的元素都是允许的,包括null
。
内存一致性效果:与其他并发集合,在将对象放入一个CopyOnWriteArrayList
happen-before行动从另一个线程的CopyOnWriteArrayList
元素的访问和去除之前的线程的行为。
这个班的一员 Java Collections Framework。
Constructor and Description |
---|
CopyOnWriteArrayList()
创建一个空列表。
|
CopyOnWriteArrayList(Collection<? extends E> c)
创建包含指定集合的元素的列表,在它们由集合的迭代器返回的顺序中。
|
CopyOnWriteArrayList(E[] toCopyIn)
创建一个保持给定数组的副本的列表。
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(E e)
将指定的元素列表的结束。
|
void |
add(int index, E element)
在列表中指定的位置上插入指定的元素。
|
boolean |
addAll(Collection<? extends E> c)
追加指定集合的所有元素到这个列表的末尾,按他们的指定集合的迭代器返回。
|
boolean |
addAll(int index, Collection<? extends E> c)
将指定集合中的所有元素插入到该列表中,从指定位置开始。
|
int |
addAllAbsent(Collection<? extends E> c)
添加指定集合的所有,是不是已经包含在该列表中的元素,在这个列表的末尾,按他们的指定集合的迭代器返回。
|
boolean |
addIfAbsent(E e)
附加的元素,如果不存在。
|
void |
clear()
从这个列表中移除所有的元素。
|
Object |
clone()
返回此列表的浅副本。
|
boolean |
contains(Object o)
返回
true 如果这个列表包含指定元素。
|
boolean |
containsAll(Collection<?> c)
返回
true 如果这个列表包含指定集合的所有元素。
|
boolean |
equals(Object o)
将指定的对象与此列表进行比较,以进行相等性。
|
void |
forEach(Consumer<? super E> action)
执行特定动作的每一个元素的
Iterable 直到所有元素都被处理或操作抛出异常。
|
E |
get(int index)
返回此列表中指定位置的元素。
|
int |
hashCode()
返回此列表的哈希代码值。
|
int |
indexOf(E e, int index)
返回此列表中的第一个出现的指定元素的索引,搜索了从
index ,或返回1如果元素没有被发现。
|
int |
indexOf(Object o)
返回此列表中指定元素的第一个出现的索引,或-如果此列表不包含元素,或- 1。
|
boolean |
isEmpty()
返回
true 如果此列表不包含元素。
|
Iterator<E> |
iterator()
在这个列表中的元素上返回一个正确的顺序。
|
int |
lastIndexOf(E e, int index)
返回此列表的指定元素的最后一个匹配项的索引,搜索
index 往后,或返回1如果元素没有被发现。
|
int |
lastIndexOf(Object o)
返回此列表中指定元素的最后一个发生的索引,或-如果此列表不包含元素,或- 1。
|
ListIterator<E> |
listIterator()
返回列表元素的列表迭代器(在适当的顺序)。
|
ListIterator<E> |
listIterator(int index)
在列表中的元素上返回列表迭代器(在适当的顺序),从列表中的指定位置开始。
|
E |
remove(int index)
移除此列表中指定位置的元素。
|
boolean |
remove(Object o)
从该列表中移除指定元素的第一个发生,如果它是存在的。
|
boolean |
removeAll(Collection<?> c)
从这个列表中移除包含在指定集合中的所有元素。
|
boolean |
removeIf(Predicate<? super E> filter)
删除满足给定谓词的这个集合的所有元素。
|
void |
replaceAll(UnaryOperator<E> operator)
用将运算符应用到该元素的结果替换此列表中的每个元素。
|
boolean |
retainAll(Collection<?> c)
仅保留包含在指定集合中的列表中的元素。
|
E |
set(int index, E element)
用指定元素替换此列表中指定位置的元素。
|
int |
size()
返回此列表中元素的数目。
|
void |
sort(Comparator<? super E> c)
分类列表使用提供的
Comparator 比较元素。
|
Spliterator<E> |
spliterator()
返回此列表中的元素的
Spliterator 。
|
List<E> |
subList(int fromIndex, int toIndex)
返回一个视图的
fromIndex ,包容,和
toIndex 之间的部分列表,独家。
|
Object[] |
toArray()
返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一个到最后一个元素)。
|
<T> T[] |
toArray(T[] a)
返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一到最后一个元素);返回数组的运行时类型是指定的数组的运行时类型。
|
String |
toString()
返回此列表的字符串表示形式。
|
finalize, getClass, notify, notifyAll, wait, wait, wait
parallelStream, stream
public CopyOnWriteArrayList()
public CopyOnWriteArrayList(Collection<? extends E> c)
c
-收集最初举行的元素
NullPointerException
-如果指定集合为空
public CopyOnWriteArrayList(E[] toCopyIn)
toCopyIn
-阵列(一份此阵列作为内部数组)
NullPointerException
-如果指定的数组是空的
public int size()
public boolean isEmpty()
true
如果此列表不包含元素。
public boolean contains(Object o)
true
如果这个列表包含指定元素。更正式地说,返回
true
当且仅当该列表包含至少一个元素
e
这样
(o==null ? e==null : o.equals(e))。
public int indexOf(Object o)
public int indexOf(E e, int index)
index
,或返回1如果元素没有被发现。更正式地说,返回
i
指数最低,
(i >= index && (e==null ? get(i)==null : e.equals(get(i)))),或1,如果没有这样的指标。
e
元搜索
index
指数开始搜索
index
或稍后在本列表的索引;如果没有找到
-1
元素。
IndexOutOfBoundsException
-如果指定的指数是负的
public int lastIndexOf(Object o)
lastIndexOf
接口
List<E>
o
元搜索
public int lastIndexOf(E e, int index)
index
往后,或返回1如果元素没有被发现。更正式地说,返回最高指数
i
这样
(i <= index && (e==null ? get(i)==null : e.equals(get(i)))),或1,如果没有这样的指标。
e
元搜索
index
指数开始向后搜索从
index
此列表中的元素的最后一个匹配项的索引;1如果元素没有被发现。
IndexOutOfBoundsException
-如果指定的索引大于或等于此列表的当前大小
public Object clone()
public Object[] toArray()
返回的数组将是“安全”的,在这个列表中没有引用它的引用。(换句话说,这种方法必须分配一个新的数组)。因此,调用方可以自由修改返回的数组。
此方法作为基于数组和基于集合的原料药之间的桥梁。
toArray
接口
Collection<E>
toArray
接口
List<E>
Arrays.asList(Object[])
public <T> T[] toArray(T[] a)
如果此列表可以指定数组中剩余的空间(即数组有比这个列表元素),在数组列表结束后立即的元素设置为null
。(这是有用的在确定这个名单只有长度如果调用者知道此列表不包含null元素。)
像toArray()
方法,该方法作为之间的桥梁,基于阵列和基于集合API。此外,该方法允许对输出数组的运行时类型的精确控制,并在某些情况下,可用于节省分配成本。
假设是已知x
列表只包含字符串。下面的代码可以用来把列表到新分配的数组String
:
String[] y = x.toArray(new String[0]);
注意
toArray(new Object[0])
是相同的功能,
toArray()
。
toArray
接口
Collection<E>
toArray
接口
List<E>
T
-数组的运行时类型包含集合
a
-到列表的元素被存储数组,如果它足够大;否则,一个新的运行时类型相同的数组分配给这个目的。
ArrayStoreException
-如果指定数组的运行时类型不是超此列表中每个元素运行时类型
NullPointerException
-如果指定的数组是空的
public E get(int index)
get
接口
List<E>
index
索引元素的回归
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index >= size())
public E set(int index, E element)
set
接口
List<E>
index
索引的元素代替
element
元素被存储在指定的位置
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index >= size())
public boolean add(E e)
add
接口
Collection<E>
add
接口
List<E>
e
元素附加到列表
true
(由
Collection.add(E)
指定)
public void add(int index, E element)
add
接口
List<E>
index
指数在指定的元素被插入
element
元素被插入
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index > size())
public E remove(int index)
remove
接口
List<E>
index
-要被删除的元素的索引
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index >= size())
public boolean remove(Object o)
i
这样
(o==null ? get(i)==null : o.equals(get(i)))元素(如元素的存在)。返回
true
如果此列表中指定的元素(或等价地,如果调用的结果列表中更改)。
public boolean addIfAbsent(E e)
e
元素被添加到该列表,如果缺席
true
如果元素添加
public boolean containsAll(Collection<?> c)
true
如果这个列表包含指定集合的所有元素。
containsAll
接口
Collection<E>
containsAll
接口
List<E>
c
收集来检查列表是否包含的
true
如果这个列表包含指定集合的所有元素
NullPointerException
-如果指定集合为空
contains(Object)
public boolean removeAll(Collection<?> c)
removeAll
接口
Collection<E>
removeAll
接口
List<E>
c
收集含有元素被从列表中删除
true
如果调用的结果列表中改变
ClassCastException
-如果该列表元素的类与集合不相容(
optional)
NullPointerException
-如果此列表包含一个null元素而指定集合不允许null元素(
optional),或者指定集合为空
remove(Object)
public boolean retainAll(Collection<?> c)
retainAll
接口
Collection<E>
retainAll
接口
List<E>
c
收集含有元素被保留在这个列表
true
如果调用的结果列表中改变
ClassCastException
-如果该列表元素的类与集合不相容(
optional)
NullPointerException
-如果此列表包含一个null元素而指定集合不允许null元素(
optional),或者指定集合为空
remove(Object)
public int addAllAbsent(Collection<? extends E> c)
c
收集含有的元素被添加到列表
NullPointerException
-如果指定集合为空
addIfAbsent(Object)
public void clear()
public boolean addAll(Collection<? extends E> c)
addAll
接口
Collection<E>
addAll
接口
List<E>
c
收集含有的元素被添加到列表
true
如果调用的结果列表中改变
NullPointerException
-如果指定集合为空
add(Object)
public boolean addAll(int index, Collection<? extends E> c)
addAll
接口
List<E>
index
指数,从指定集合的第一个元素的插入
c
收集含有的元素被添加到列表
true
如果调用的结果列表中改变
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index > size())
NullPointerException
-如果指定集合为空
add(int,Object)
public void forEach(Consumer<? super E> action)
Iterable
Iterable
直到所有元素都被处理或操作抛出异常。除非实现类的其他指定,否则操作在迭代的顺序中(如果指定了一个迭代顺序)。由操作引发的异常被传递给调用方。
public boolean removeIf(Predicate<? super E> filter)
Collection
removeIf
接口
Collection<E>
filter
-谓词返回
true
元素被删除
true
如果任何被删除元素
public void replaceAll(UnaryOperator<E> operator)
List
replaceAll
接口
List<E>
operator
-操作适用于每一个元素
public void sort(Comparator<? super E> c)
List
Comparator
比较元素。
sort
接口
List<E>
c
用来比较列表元素的
Comparator
。一个
null
值表示元素的
natural ordering应使用
public String toString()
"[]"
)。相邻的元素是由人物
", "
隔开(逗号和空格)。元素转换为字符串的
String.valueOf(Object)
。
public boolean equals(Object o)
true
指定对象是否是对象该对象相同,或者如果它是一
List
和在指定的目录中的一个
iterator返回序列的元素是通过此列表迭代器返回的顺序相同。这两个序列被认为是相同的,如果它们具有相同的长度和相应的元素在相同的序列中的位置是相等的。两元素
e1
和
e2
如果
(e1==null ? e2==null : e1.equals(e2))
是相同的。
equals
接口
Collection<E>
equals
接口
List<E>
equals
方法重写,继承类
Object
o
-同当前列表比较相等性的对象
true
指定对象是否等于此列表
Object.hashCode()
,
HashMap
public int hashCode()
该实现使用定义在List.hashCode()
。
hashCode
接口
Collection<E>
hashCode
接口
List<E>
hashCode
方法重写,继承类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public Iterator<E> iterator()
返回的迭代器提供了一个列表的状态的快照,当迭代器被构造。遍历迭代器时不需要同步。迭代器不支持remove
方法。
public ListIterator<E> listIterator()
返回的迭代器提供了一个列表的状态的快照,当迭代器被构造。遍历迭代器时不需要同步。迭代器不支持remove
,set
或add
方法。
listIterator
接口
List<E>
public ListIterator<E> listIterator(int index)
next
。对
previous
初始调用将返回与指定的指数减一元。
返回的迭代器提供了一个列表的状态的快照,当迭代器被构造。遍历迭代器时不需要同步。迭代器不支持remove
,set
或add
方法。
listIterator
接口
List<E>
index
索引的第一个元素是列表迭代器返回(通过调用
next
)
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index > size()
)
public Spliterator<E> spliterator()
Spliterator
。
报告的Spliterator
Spliterator.IMMUTABLE
,Spliterator.ORDERED
,Spliterator.SIZED
,和Spliterator.SUBSIZED
。
的spliterator提供列表的状态快照时,spliterator构建。不同步是在spliterator操作需要。
spliterator
接口
Iterable<E>
spliterator
接口
Collection<E>
spliterator
接口
List<E>
Spliterator
public List<E> subList(int fromIndex, int toIndex)
fromIndex
之间,这个清单部分包容,和
toIndex
,独家。返回的列表是由此列表支持的,因此返回列表中的更改将反映在列表中。
通过这种方法返回的列表的语义成为不确定的,如果支持列表(即,此列表)通过任何方式修改,而不是通过返回列表中。
subList
接口
List<E>
fromIndex
低端点(含)的子列表
toIndex
高端点(独家)的子列表
IndexOutOfBoundsException
-非法终点指标值(
fromIndex < 0 || toIndex > size || fromIndex > toIndex)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.