E
-元素举行此集合中的类型
public class CopyOnWriteArraySet<E> extends AbstractSet<E> implements Serializable
Set
,使用内部的
CopyOnWriteArrayList
其所有操作。因此,它具有相同的基本特性:
add
,set
,remove
,等)价格昂贵,因为他们通常需要复制整个底层阵列。remove
操作。示例用法。以下代码草图使用写时拷贝设置保持一套处理程序对象执行一些动作在状态更新。
class Handler { void handle(); ... }
class X {
private final CopyOnWriteArraySet<Handler> handlers
= new CopyOnWriteArraySet<Handler>();
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。
CopyOnWriteArrayList
,
Serialized Form
Constructor and Description |
---|
CopyOnWriteArraySet()
创建一个空集。
|
CopyOnWriteArraySet(Collection<? extends E> c)
创建一个包含指定集合的所有元素的集合。
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(E e)
如果没有已存在,则将指定的元素添加到该集合中。
|
boolean |
addAll(Collection<? extends E> c)
如果没有已存在,将在指定集合中的所有元素添加到该集合中。
|
void |
clear()
从这个集合中移除所有的元素。
|
boolean |
contains(Object o)
如果这套
true 返回包含指定的元素。
|
boolean |
containsAll(Collection<?> c)
如果这套
true 返回包含指定集合的所有元素。
|
boolean |
equals(Object o)
将指定的对象与此设置的相等性进行比较。
|
void |
forEach(Consumer<? super E> action)
执行特定动作的每一个元素的
Iterable 直到所有元素都被处理或操作抛出异常。
|
boolean |
isEmpty()
返回
true 如果这个集合不包含元素。
|
Iterator<E> |
iterator()
返回在这个集合中的元素的元素,这些元素被添加的顺序中返回一个迭代器。
|
boolean |
remove(Object o)
如果当前存在,则从该集合中移除指定的元素。
|
boolean |
removeAll(Collection<?> c)
从这个集合中移除包含在指定集合中的所有元素。
|
boolean |
removeIf(Predicate<? super E> filter)
删除满足给定谓词的这个集合的所有元素。
|
boolean |
retainAll(Collection<?> c)
仅保留包含在指定集合中的此集合中的元素。
|
int |
size()
返回此集合中的元素的数目。
|
Spliterator<E> |
spliterator()
返回在秩序中,这些元素被添加在这个集合中的元素个
Spliterator 。
|
Object[] |
toArray()
返回一个包含此集合中所有元素的数组。
|
<T> T[] |
toArray(T[] a)
返回包含此集合中的所有元素的数组;返回的数组的运行时类型是指定的数组的运行时类型。
|
hashCode
toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
parallelStream, stream
public CopyOnWriteArraySet()
public CopyOnWriteArraySet(Collection<? extends E> c)
c
-最初包含元素的集合
NullPointerException
-如果指定集合为空
public int size()
size
接口
Collection<E>
size
接口
Set<E>
size
方法重写,继承类
AbstractCollection<E>
public boolean isEmpty()
true
如果这个集合不包含元素。
isEmpty
接口
Collection<E>
isEmpty
接口
Set<E>
isEmpty
方法重写,继承类
AbstractCollection<E>
true
如果这个集合不包含元素
public boolean contains(Object o)
true
返回包含指定的元素。更正式地说,返回
true
当且仅当本集包含一个元素
e
这样
(o==null ? e==null : o.equals(e))。
contains
接口
Collection<E>
contains
接口
Set<E>
contains
方法重写,继承类
AbstractCollection<E>
o
-这个集合中存在的元素进行测试
true
包含指定的元素
public Object[] toArray()
返回的数组将是“安全”的,没有引用它是由这个设置。换句话说,这种方法必须分配一个新的数组,即使这个集合是由一个数组的支持。因此,调用方可以自由修改返回的数组。
此方法作为基于数组和基于集合的原料药之间的桥梁。
toArray
接口
Collection<E>
toArray
接口
Set<E>
toArray
方法重写,继承类
AbstractCollection<E>
public <T> T[] toArray(T[] a)
如果这一套适合指定数组中剩余的空间(即数组有比这个设置更多的元素),在阵列的设置结束后立即的元素设置为null
。(这是有用的在确定这套只有长度如果调用者知道这集不包含任何无效的元素。)
如果此集对迭代器返回的顺序有任何保证,则该方法必须以相同的顺序返回元素。
像toArray()
方法,该方法作为之间的桥梁,基于阵列和基于集合API。此外,该方法允许对输出数组的运行时类型的精确控制,并在某些情况下,可用于节省分配成本。
假设x
是一组已知仅包含字符串。下面的代码可以用来堆集到新分配的数组String
:
String[] y = x.toArray(new String[0]);
注意
toArray(new Object[0])
是相同的功能,
toArray()
。
toArray
接口
Collection<E>
toArray
接口
Set<E>
toArray
方法重写,继承类
AbstractCollection<E>
T
-数组的运行时类型包含集合
a
-在这个集合中的元素被存储数组,如果它足够大;否则,一个新的运行时类型相同的数组分配给这个目的。
ArrayStoreException
-如果指定数组的运行时类型不是超set中每个元素运行时类型
NullPointerException
-如果指定的数组是空的
public void clear()
clear
接口
Collection<E>
clear
接口
Set<E>
clear
方法重写,继承类
AbstractCollection<E>
public boolean remove(Object o)
e
这样
(o==null ? e==null : o.equals(e)),如果这个集合包含的元素。返回
true
如果这组包含的元素(或等价的,如果调用的结果这套改)。(此设置将不包含调用返回的元素。)
remove
接口
Collection<E>
remove
接口
Set<E>
remove
方法重写,继承类
AbstractCollection<E>
o
对象要从组中删除,如果存在
true
包含指定元素
public boolean add(E e)
e
这套如果集合不包含元素
e2
这样
(e==null ? e2==null : e.equals(e2))。如果这一套已经包含元素,电话离开设定不变,返回
false
。
add
接口
Collection<E>
add
接口
Set<E>
add
方法重写,继承类
AbstractCollection<E>
e
元素被添加到这个组
true
已经不包含指定的元素
public boolean containsAll(Collection<?> c)
true
返回包含指定集合的所有元素。如果指定的集合也是一个set,如果它是一个子集这套方法返回
true
。
containsAll
接口
Collection<E>
containsAll
接口
Set<E>
containsAll
方法重写,继承类
AbstractCollection<E>
c
采集被检查这套壳
true
如果这集包含指定集合的所有元素
NullPointerException
-如果指定集合为空
contains(Object)
public boolean addAll(Collection<? extends E> c)
addAll
操作修改set的效果是使它的值为两个集联盟。当操作正在进行中时,此操作的行为是未定义的,如果指定的集合被修改,则该操作将被修改为。
addAll
接口
Collection<E>
addAll
接口
Set<E>
addAll
方法重写,继承类
AbstractCollection<E>
c
收集含有元素被添加到这个组
true
如果调用的结果这一套了
NullPointerException
-如果指定集合为空
add(Object)
public boolean removeAll(Collection<?> c)
removeAll
接口
Collection<E>
removeAll
接口
Set<E>
removeAll
方法重写,继承类
AbstractSet<E>
c
收集包含元素要从集合中移除
true
如果调用的结果这一套了
ClassCastException
-如果这个集合的元素的类与集合不相容(可选)
NullPointerException
-如果这套包含一个null元素而指定集合不允许null元素(可选),或者指定集合为空
remove(Object)
public boolean retainAll(Collection<?> c)
retainAll
接口
Collection<E>
retainAll
接口
Set<E>
retainAll
方法重写,继承类
AbstractCollection<E>
c
收集包含元素被保留在这套
true
如果调用的结果这一套了
ClassCastException
-如果这个集合的元素的类与集合不相容(可选)
NullPointerException
-如果这套包含一个null元素而指定集合不允许null元素(可选),或者指定集合为空
remove(Object)
public Iterator<E> iterator()
返回的迭代器提供了一个在构建迭代器时设置的状态的快照。遍历迭代器时不需要同步。迭代器不支持remove
方法。
public boolean equals(Object o)
true
指定对象是否是对象该对象相同,或者如果它是一
Set
和超过指定的设置
iterator返回的元素的迭代器返回的这组元素相同。更正式地说,两个迭代器认为如果他们返回相同数量的元素,每个元素
e1
由迭代器返回在指定集合返回相同的元素,有一个元素,
e2
由迭代器返回的这一集,
(e1==null ? e2==null : e1.equals(e2))
。
equals
接口
Collection<E>
equals
接口
Set<E>
equals
方法重写,继承类
AbstractSet<E>
o
对象进行比较,用这套平等
true
指定对象是否等于这套
Object.hashCode()
,
HashMap
public boolean removeIf(Predicate<? super E> filter)
Collection
removeIf
接口
Collection<E>
filter
-谓词返回的元素被删除
true
true
如果任何被删除元素
public void forEach(Consumer<? super E> action)
Iterable
Iterable
直到所有元素都被处理或操作抛出异常。除非实现类的其他指定,否则操作在迭代的顺序中(如果指定了一个迭代顺序)。由操作引发的异常被传递给调用方。
public Spliterator<E> spliterator()
Spliterator
。
报告的Spliterator
Spliterator.IMMUTABLE
,Spliterator.DISTINCT
,Spliterator.SIZED
,和Spliterator.SUBSIZED
。
的spliterator提供了设置状态的快照时,spliterator构建。不同步是在spliterator操作需要。
spliterator
接口
Iterable<E>
spliterator
接口
Collection<E>
spliterator
接口
Set<E>
Spliterator
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.