E
-元素举行此集合中的类型
public class ConcurrentLinkedDeque<E> extends AbstractCollection<E> implements Deque<E>, Serializable
ConcurrentLinkedDeque
是一个合适的选择,当多个线程共享访问公共收藏。像大多数其他并行采集的实现,这类不允许使用
null
元素。
迭代器和spliterators是weakly consistent。
要小心的是,不像大多数集合的方法,size
不是常量时间的操作。由于这些双端队列的异步性,确定当前的元素数量需要遍历的元素,所以可能会报告不准确的结果,如果这个集合是在遍历性。此外,大容量操作addAll
,removeAll
,retainAll
,containsAll
,equals
,和toArray
不保证是自动执行。例如,一个addAll
并发运行的操作一个迭代器可能会认为只有一些加入的元素。
这个类和它的迭代器实现所有的可选方法的Deque
和Iterator
接口。
内存一致性效果:与其他并发集合,在将对象放入一个ConcurrentLinkedDeque
happen-before行动从另一个线程的ConcurrentLinkedDeque
元素的访问和去除之前的线程的行为。
这个班的一员 Java Collections Framework。
Constructor and Description |
---|
ConcurrentLinkedDeque()
构造一个空的容器。
|
ConcurrentLinkedDeque(Collection<? extends E> c)
构建一个deque最初包含元素的集合,加入集合的迭代器遍历顺序。
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(E e)
在这个队列的尾部插入指定元素。
|
boolean |
addAll(Collection<? extends E> c)
追加指定集合的所有元素到这个队列的最后,以便他们按指定集合的迭代器返回。
|
void |
addFirst(E e)
在这个队列的前面插入指定元素。
|
void |
addLast(E e)
在这个队列的末尾插入指定元素。
|
void |
clear()
删除所有的从这个容器元素。
|
boolean |
contains(Object o)
返回
true 如果此队列包含至少一个元素
e 这样
o.equals(e) 。
|
Iterator<E> |
descendingIterator()
返回在反向顺序在deque容器元素的迭代器。
|
E |
element()
检索,但不删除,这代表的deque队列的头部(换句话说,这个容器的第一个元素)。
|
E |
getFirst()
检索,但不删除该deque容器的第一个元素。
|
E |
getLast()
检索,但不删除该队列的最后一个元素。
|
boolean |
isEmpty()
返回
true 如果集合不包含任何元素。
|
Iterator<E> |
iterator()
返回以正确的顺序在deque容器元素的迭代器。
|
boolean |
offer(E e)
在这个队列的尾部插入指定元素。
|
boolean |
offerFirst(E e)
在这个队列的前面插入指定元素。
|
boolean |
offerLast(E e)
在这个队列的末尾插入指定元素。
|
E |
peek()
检索,但不删除,这代表的deque队列的头部(换句话说,这个容器的第一个元素),或返回
null 如果队列是空的。
|
E |
peekFirst()
检索,但不删除该deque容器的第一个元素,或返回
null 如果队列是空的。
|
E |
peekLast()
检索,但不删除该队列的最后一个元素,或返回
null 如果队列是空的。
|
E |
poll()
检索并移除该deque表示队列的头部(换句话说,这个容器的第一个元素),或返回
null 如果队列是空的。
|
E |
pollFirst()
检索并移除此队列的第一个元素,或返回
null 如果队列是空的。
|
E |
pollLast()
检索并移除此队列的最后一个元素,或返回
null 如果队列是空的。
|
E |
pop()
从这个弹出堆栈队列代表元素。
|
void |
push(E e)
将一个元素到该deque表示堆栈(换句话说,在这个队列的头)如果可能立即这样做不违反容量限制,抛出一个
IllegalStateException 如果没有空间是可用的。
|
E |
remove()
检索并移除该deque表示队列的头部(换句话说,这个容器的第一个元素)。
|
boolean |
remove(Object o)
删除第一个元素
e 这样
o.equals(e) ,如果这种元素存在于这个容器。
|
E |
removeFirst()
检索并移除此队列的第一个元素。
|
boolean |
removeFirstOccurrence(Object o)
删除第一个元素
e 这样
o.equals(e) ,如果这种元素存在于这个容器。
|
E |
removeLast()
检索并移除此队列的最后一个元素。
|
boolean |
removeLastOccurrence(Object o)
删除最后一个元素
e 这样
o.equals(e) ,如果这种元素存在于这个容器。
|
int |
size()
返回该容器元素的数量。
|
Spliterator<E> |
spliterator()
返回在deque容器元素的
Spliterator 。
|
Object[] |
toArray()
返回一个数组包含所有在这个容器的元素,以正确的顺序(从第一个到最后一个元素)。
|
<T> T[] |
toArray(T[] a)
返回一个数组包含所有在这个容器的元素,以正确的顺序(从第一个到最后一个元素);返回数组的运行时类型为指定数组。
|
containsAll, removeAll, retainAll, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
containsAll, equals, hashCode, parallelStream, removeAll, removeIf, retainAll, stream
public ConcurrentLinkedDeque()
public ConcurrentLinkedDeque(Collection<? extends E> c)
c
-最初包含元素的集合
NullPointerException
-如果指定集合或其任何元素都是空的
public void addFirst(E e)
IllegalStateException
。
addFirst
接口
Deque<E>
e
-元素添加
NullPointerException
-如果指定元素为null
public void addLast(E e)
IllegalStateException
。
这种方法相当于add(E)
。
addLast
接口
Deque<E>
e
-元素添加
NullPointerException
-如果指定元素为null
public boolean offerFirst(E e)
false
。
offerFirst
接口
Deque<E>
e
-元素添加
true
(由
Deque.offerFirst(E)
指定)
NullPointerException
-如果指定元素为null
public boolean offerLast(E e)
false
。
这种方法相当于add(E)
。
offerLast
接口
Deque<E>
e
-元素添加
true
(由
Deque.offerLast(E)
指定)
NullPointerException
-如果指定元素为null
public E getFirst()
Deque
peekFirst
仅在于它抛出一个异常,如果这个容器是空的。
getFirst
接口
Deque<E>
NoSuchElementException
-如果这队列是空的
public E getLast()
Deque
peekLast
仅在于它抛出一个异常,如果这个容器是空的。
getLast
接口
Deque<E>
NoSuchElementException
-如果这队列是空的
public E removeFirst()
Deque
pollFirst
仅在于它抛出一个异常,如果这个容器是空的。
removeFirst
接口
Deque<E>
NoSuchElementException
-如果这队列是空的
public E removeLast()
Deque
pollLast
仅在于它抛出一个异常,如果这个容器是空的。
removeLast
接口
Deque<E>
NoSuchElementException
-如果这队列是空的
public boolean offer(E e)
false
。
offer
接口
Deque<E>
offer
接口
Queue<E>
e
-元素添加
true
(由
Queue.offer(E)
指定)
NullPointerException
-如果指定元素为null
public boolean add(E e)
IllegalStateException
或返回
false
。
add
接口
Collection<E>
add
接口
Deque<E>
add
接口
Queue<E>
add
方法重写,继承类
AbstractCollection<E>
e
-集合中存在的元素来保证
true
(由
Collection.add(E)
指定)
NullPointerException
-如果指定元素为null
public E poll()
Deque
null
如果队列是空的。
这种方法相当于Deque.pollFirst()
。
public E peek()
Deque
null
如果队列是空的。
这种方法相当于Deque.peekFirst()
。
public E remove()
Deque
poll
仅在于它抛出一个异常,如果这个容器是空的。
这种方法相当于Deque.removeFirst()
。
public E pop()
Deque
这种方法相当于Deque.removeFirst()
。
pop
接口
Deque<E>
NoSuchElementException
-如果这队列是空的
public E element()
Deque
peek
仅在于它抛出一个异常,如果这个容器是空的。
这种方法相当于Deque.getFirst()
。
public void push(E e)
Deque
IllegalStateException
如果没有空间是可用的。
这种方法相当于Deque.addFirst(E)
。
push
接口
Deque<E>
e
-元推
NullPointerException
-如果指定元素为null,这的确不允许null元素
public boolean removeFirstOccurrence(Object o)
e
这样
o.equals(e)
,如果这种元素存在于这个容器。如果队列不包含元素,它是不变的。
removeFirstOccurrence
接口
Deque<E>
o
元要从队列移除,如果存在
true
如果队列包含指定元素
NullPointerException
-如果指定元素为null
public boolean removeLastOccurrence(Object o)
e
这样
o.equals(e)
,如果这种元素存在于这个容器。如果队列不包含元素,它是不变的。
removeLastOccurrence
接口
Deque<E>
o
元要从队列移除,如果存在
true
如果队列包含指定元素
NullPointerException
-如果指定元素为null
public boolean contains(Object o)
true
如果此队列包含至少一个元素
e
这样
o.equals(e)
。
contains
接口
Collection<E>
contains
接口
Deque<E>
contains
方法重写,继承类
AbstractCollection<E>
o
-这的确存在的元素进行测试
true
包含指定的元素
public boolean isEmpty()
true
如果集合不包含任何元素。
isEmpty
接口
Collection<E>
isEmpty
方法重写,继承类
AbstractCollection<E>
true
如果集合不包含任何元素
public int size()
Integer.MAX_VALUE
元素,则返回
请注意,与大多数集合不同,此方法不是一个常数时间操作。由于这些双端队列的异步性,确定当前的元素数量需要遍历所有的计数。此外,它是可能的大小在执行过程中的这种方法的变化,在这种情况下,返回的结果将是不准确的。因此,这种方法通常是不是非常有用的并发应用程序。
Integer.MAX_VALUE
。
size
接口
Collection<E>
size
接口
Deque<E>
size
方法重写,继承类
AbstractCollection<E>
public boolean remove(Object o)
e
这样
o.equals(e)
,如果这种元素存在于这个容器。如果队列不包含元素,它是不变的。
remove
接口
Collection<E>
remove
接口
Deque<E>
remove
方法重写,继承类
AbstractCollection<E>
o
元要从队列移除,如果存在
true
如果队列包含指定元素
NullPointerException
-如果指定元素为null
public boolean addAll(Collection<? extends E> c)
addAll
一个deque容器本身造成
IllegalArgumentException
。
addAll
接口
Collection<E>
addAll
方法重写,继承类
AbstractCollection<E>
c
要插入该deque容器元素
true
如果调用的结果这的确改变了
NullPointerException
-如果指定集合或其任何元素都是空的
IllegalArgumentException
-如果集合是deque容器
AbstractCollection.add(Object)
public void clear()
clear
接口
Collection<E>
clear
方法重写,继承类
AbstractCollection<E>
public Object[] toArray()
返回的数组将“安全”,没有提到它的容器保持。(换句话说,这种方法必须分配一个新的数组)。因此,调用方可以自由修改返回的数组。
此方法作为基于数组和基于集合的原料药之间的桥梁。
toArray
接口
Collection<E>
toArray
方法重写,继承类
AbstractCollection<E>
public <T> T[] toArray(T[] a)
如果这的确符合指定数组中剩余的空间(即数组有比这更多的元素,deque)阵列中的队列立即结束后的元素设置为null
。
像toArray()
方法,该方法作为之间的桥梁,基于阵列和基于集合API。此外,该方法允许对输出数组的运行时类型的精确控制,并在某些情况下,可用于节省分配成本。
假设x
是deque容器称为只包含字符串。下面的代码可以用来倾倒容器为新分配的数组String
:
String[] y = x.toArray(new String[0]);
注意
toArray(new Object[0])
是相同的功能,
toArray()
。
toArray
接口
Collection<E>
toArray
方法重写,继承类
AbstractCollection<E>
T
-数组的运行时类型包含集合
a
-为该容器的元素被存储数组,如果它足够大;否则,一个新的运行时类型相同的数组分配给这个目的
ArrayStoreException
-如果指定数组的运行时类型不是超在该队列的每个元素运行时类型
NullPointerException
-如果指定的数组是空的
public Iterator<E> iterator()
返回的迭代器是weakly consistent。
public Iterator<E> descendingIterator()
返回的迭代器是weakly consistent。
descendingIterator
接口
Deque<E>
public Spliterator<E> spliterator()
Spliterator
。
返回的spliterator是weakly consistent。
报告的Spliterator
Spliterator.CONCURRENT
,Spliterator.ORDERED
,和Spliterator.NONNULL
。
spliterator
接口
Iterable<E>
spliterator
接口
Collection<E>
Spliterator
trySplit
允许有限的并行实现。
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.