Класс ConcurrentLinkedDeque<E>
- Параметры типа:
E- тип элементов, хранящихся в этой двусторонней очереди
- Все реализуемые интерфейсы:
Serializable, Iterable<E>, Collection<E>, Deque<E>, Queue<E>, SequencedCollection<E>
public class ConcurrentLinkedDeque<E> extends AbstractCollection<E> implements Deque<E>, Serializable
ConcurrentLinkedDeque подходит, когда многим потокам необходим совместный доступ к общей коллекции. Как и большинство других реализаций конкурентных коллекций, этот класс не допускает использования элементов null. Итераторы и сплитераторы являются слабо согласованными.
Обратите внимание: в отличие от большинства коллекций, метод size НЕ выполняется за постоянное время. Из-за асинхронной природы таких двусторонних очередей для определения текущего числа элементов требуется их обход, поэтому при изменении коллекции во время обхода результат может быть неточным.
Массовые операции, добавляющие, удаляющие или проверяющие несколько элементов, такие как addAll(Collection), removeIf(Predicate) или forEach(Consumer), не гарантированно выполняются атомарно. Например, обход forEach, выполняемый одновременно с операцией
addAll, может обнаружить лишь некоторые из добавленных элементов.
Этот класс и его итератор реализуют все необязательные методы интерфейсов Deque и Iterator.
Эффекты согласованности памяти: как и в других конкурентных коллекциях, действия в потоке, предшествующие помещению объекта в ConcurrentLinkedDeque, происходят до действий, выполняемых после доступа к этому элементу или его удаления из ConcurrentLinkedDeque в другом потоке.
Этот класс является частью Java Collections Framework.
- С версии:
- 1.7
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ConcurrentLinkedDeque() |
Создает пустую двустороннюю очередь. |
ConcurrentLinkedDeque |
Создает двустороннюю очередь, изначально содержащую элементы указанной коллекции, добавленные в порядке обхода итератором коллекции. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в конец этой двусторонней очереди. |
boolean |
addAll |
Добавляет все элементы указанной коллекции в конец этой двусторонней очереди в том порядке, в котором их возвращает итератор указанной коллекции. |
void |
addFirst |
Вставляет указанный элемент в начало этой двусторонней очереди. |
void |
addLast |
Вставляет указанный элемент в конец этой двусторонней очереди. |
void |
clear() |
Удаляет все элементы из этой двусторонней очереди. |
boolean |
contains |
Возвращает true, если эта двусторонняя очередь содержит указанный элемент. |
Iterator |
descendingIterator() |
Возвращает итератор по элементам этой двусторонней очереди в обратном порядке. |
E |
element() |
Возвращает, но не удаляет начало очереди, представленной этой двусторонней очередью (то есть первый элемент этой двусторонней очереди). |
void |
forEach |
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не вызовет исключение. |
E |
getFirst() |
Возвращает, но не удаляет первый элемент этой двусторонней очереди. |
E |
getLast() |
Возвращает, но не удаляет последний элемент этой двусторонней очереди. |
boolean |
isEmpty() |
Возвращает true, если коллекция не содержит элементов. |
Iterator |
iterator() |
Возвращает итератор по элементам этой двусторонней очереди в надлежащем порядке. |
boolean |
offer |
Вставляет указанный элемент в конец этой двусторонней очереди. |
boolean |
offerFirst |
Вставляет указанный элемент в начало этой двусторонней очереди. |
boolean |
offerLast |
Вставляет указанный элемент в конец этой двусторонней очереди. |
E |
peek() |
Возвращает, но не удаляет начало очереди, представленной этой двусторонней очередью (то есть первый элемент этой двусторонней очереди), или возвращает null, если двусторонняя очередь пуста. |
E |
peekFirst() |
Возвращает, но не удаляет первый элемент этой двусторонней очереди или возвращает null, если двусторонняя очередь пуста. |
E |
peekLast() |
Возвращает, но не удаляет последний элемент этой двусторонней очереди или возвращает null, если двусторонняя очередь пуста. |
E |
poll() |
Возвращает и удаляет начало очереди, представленной этой двусторонней очередью (то есть первый элемент этой двусторонней очереди) или возвращает null, если двусторонняя очередь пуста. |
E |
pollFirst() |
Возвращает и удаляет первый элемент этой двусторонней очереди или возвращает null, если двусторонняя очередь пуста. |
E |
pollLast() |
Возвращает и удаляет последний элемент этой двусторонней очереди или возвращает null, если двусторонняя очередь пуста. |
E |
pop() |
Извлекает элемент из стека, представленного этой двусторонней очередью. |
void |
push |
Помещает элемент в стек, представленный этой двусторонней очередью (то есть в начало этой двусторонней очереди), если это можно сделать немедленно без нарушения ограничений емкости; если свободного места нет, выбрасывает IllegalStateException. |
E |
remove() |
Возвращает и удаляет начало очереди, представленной этой двусторонней очередью (то есть первый элемент этой двусторонней очереди). |
boolean |
remove |
Удаляет первое вхождение указанного элемента из этой двусторонней очереди. |
boolean |
removeAll |
Удаляет из этой коллекции все элементы, которые также содержатся в указанной коллекции (необязательная операция). |
E |
removeFirst() |
Возвращает и удаляет первый элемент этой двусторонней очереди. |
boolean |
removeFirstOccurrence |
Удаляет первое вхождение указанного элемента из этой двусторонней очереди. |
boolean |
removeIf |
Удаляет из этой коллекции все элементы, удовлетворяющие заданному предикату (необязательная операция). |
E |
removeLast() |
Возвращает и удаляет последний элемент этой двусторонней очереди. |
boolean |
removeLastOccurrence |
Удаляет последнее вхождение указанного элемента из этой двусторонней очереди. |
boolean |
retainAll |
Оставляет в этой коллекции только элементы, содержащиеся в указанной коллекции (необязательная операция). |
int |
size() |
Возвращает число элементов в этой двусторонней очереди. |
Spliterator |
spliterator() |
Возвращает Spliterator для элементов этой двусторонней очереди. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этой двусторонней очереди в надлежащем порядке (от первого элемента к последнему). |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой двусторонней очереди в надлежащем порядке (от первого элемента к последнему); тип возвращаемого массива во время выполнения совпадает с типом указанного массива. |
Методы, объявленные в классе AbstractCollection
containsAll, toString | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
containsAll |
Возвращает true, если эта коллекция содержит все элементы указанной коллекции. |
String |
toString() |
Возвращает строковое представление этой коллекции. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому объекту. |
protected void |
finalize() |
Устарело, подлежит удалению: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает значение хеш-кода этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе Collection
equals, hashCode, parallelStream, stream, toArray | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает указанный объект с этой коллекцией на предмет равенства. |
int |
hashCode() |
Возвращает значение хеш-кода этой коллекции. |
default Stream |
parallelStream() |
Возвращает, возможно, параллельный Stream, источником которого является эта коллекция. |
default Stream |
stream() |
Возвращает последовательный Stream, источником которого является эта коллекция. |
default <T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой коллекции; для выделения возвращаемого массива используется предоставленная функция generator. |
Подробное описание конструкторов
ConcurrentLinkedDeque
public ConcurrentLinkedDeque()
ConcurrentLinkedDeque
public ConcurrentLinkedDeque(Collection<? extends E> c)
- Параметры:
-
c— коллекция элементов, которые должны изначально содержаться в деке - Исключения:
-
NullPointerException— если указанная коллекция или любой из её элементов равен null
Подробное описание методов
addFirst
public void addFirst(E e)
IllegalStateException.- Определено в:
-
addFirstв интерфейсеDeque<E> - Определено в:
-
addFirstв интерфейсеSequencedCollection<E> - Параметры:
-
e— добавляемый элемент - Исключения:
-
NullPointerException— если указанный элемент равен null
addLast
public void addLast(E e)
IllegalStateException. Этот метод эквивалентен add(E).
- Определено в:
-
addLastв интерфейсеDeque<E> - Определено в:
-
addLastв интерфейсеSequencedCollection<E> - Параметры:
-
e— добавляемый элемент - Исключения:
-
NullPointerException— если указанный элемент равен null
offerFirst
public boolean offerFirst(E e)
false.- Определено в:
-
offerFirstв интерфейсеDeque<E> - Параметры:
-
e— добавляемый элемент - Возвращает:
-
true(как указано вDeque.offerFirst(E)) - Исключения:
-
NullPointerException— если указанный элемент равен null
offerLast
public boolean offerLast(E e)
false. Этот метод эквивалентен add(E).
- Определено в:
-
offerLastв интерфейсеDeque<E> - Параметры:
-
e— добавляемый элемент - Возвращает:
-
true(как указано вDeque.offerLast(E)) - Исключения:
-
NullPointerException— если указанный элемент равен null
peekFirst
peekLast
getFirst
public E getFirst()
DequepeekFirst только тем, что выбрасывает исключение, если дека пуста.- Определено в:
-
getFirstв интерфейсеDeque<E> - Определено в:
-
getFirstв интерфейсеSequencedCollection<E> - Возвращает:
- первый элемент этой деки
- Исключения:
-
NoSuchElementException— если дека пуста
getLast
public E getLast()
DequepeekLast только тем, что выбрасывает исключение, если дека пуста.- Определено в:
-
getLastв интерфейсеDeque<E> - Определено в:
-
getLastв интерфейсеSequencedCollection<E> - Возвращает:
- последний элемент этой деки
- Исключения:
-
NoSuchElementException— если дека пуста
pollFirst
pollLast
removeFirst
public E removeFirst()
DequepollFirst только тем, что выбрасывает исключение, если дека пуста.- Определено в:
-
removeFirstв интерфейсеDeque<E> - Определено в:
-
removeFirstв интерфейсеSequencedCollection<E> - Возвращает:
- первый элемент этой деки
- Исключения:
-
NoSuchElementException— если дека пуста
removeLast
public E removeLast()
DequepollLast только тем, что выбрасывает исключение, если дека пуста.- Определено в:
-
removeLastв интерфейсеDeque<E> - Определено в:
-
removeLastв интерфейсеSequencedCollection<E> - Возвращает:
- последний элемент этой деки
- Исключения:
-
NoSuchElementException— если дека пуста
offer
public boolean offer(E e)
false.- Определено в:
-
offerв интерфейсеDeque<E> - Определено в:
-
offerв интерфейсеQueue<E> - Параметры:
-
e— добавляемый элемент - Возвращает:
-
true(как указано вQueue.offer(E)) - Исключения:
-
NullPointerException— если указанный элемент равен null
add
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
poll
public E poll()
Dequenull. Этот метод эквивалентен Deque.pollFirst().
peek
public E peek()
Dequenull. Этот метод эквивалентен Deque.peekFirst().
remove
public E remove()
Dequepoll() только тем, что выбрасывает исключение, если дека пуста. Этот метод эквивалентен Deque.removeFirst().
pop
public E pop()
DequeЭтот метод эквивалентен Deque.removeFirst().
- Определено в:
-
popв интерфейсеDeque<E> - Возвращает:
- элемент в начале этой деки (то есть вершину стека, представленного этой декой)
- Исключения:
-
NoSuchElementException— если дека пуста
element
public E element()
Dequepeek только тем, что выбрасывает исключение, если дека пуста. Этот метод эквивалентен Deque.getFirst().
push
public void push(E e)
DequeIllegalStateException. Этот метод эквивалентен Deque.addFirst(E).
- Определено в:
-
pushв интерфейсеDeque<E> - Параметры:
-
e— помещаемый в стек элемент - Исключения:
-
NullPointerException— если указанный элемент равен null, а эта дека не допускает null-элементы
removeFirstOccurrence
public boolean removeFirstOccurrence(Object o)
e, такой что o.equals(e) (если такой элемент существует). Возвращает true, если дека содержала указанный элемент (или, что эквивалентно, если в результате вызова дека изменилась).- Определено в:
-
removeFirstOccurrenceв интерфейсеDeque<E> - Параметры:
-
o— элемент, который необходимо удалить из этой деки, если он присутствует - Возвращает:
-
true, если дека содержала указанный элемент - Исключения:
-
NullPointerException— если указанный элемент равен null
removeLastOccurrence
public boolean removeLastOccurrence(Object o)
e, такой что o.equals(e) (если такой элемент существует). Возвращает true, если дека содержала указанный элемент (или, что эквивалентно, если в результате вызова дека изменилась).- Определено в:
-
removeLastOccurrenceв интерфейсеDeque<E> - Параметры:
-
o— элемент, который необходимо удалить из этой деки, если он присутствует - Возвращает:
-
true, если дека содержала указанный элемент - Исключения:
-
NullPointerException— если указанный элемент равен null
contains
public boolean contains(Object o)
true, если эта дека содержит указанный элемент. Формально возвращает true тогда и только тогда, когда эта дека содержит хотя бы один элемент e, такой что o.equals(e).- Определено в:
-
containsв интерфейсеCollection<E> - Определено в:
-
containsв интерфейсеDeque<E> - Переопределяет:
-
containsв классеAbstractCollection<E> - Параметры:
-
o— элемент, наличие которого в этой деке проверяется - Возвращает:
-
true, если эта дека содержит указанный элемент
isEmpty
public boolean isEmpty()
true, если эта коллекция не содержит элементов.- Определено в:
-
isEmptyв интерфейсеCollection<E> - Переопределяет:
-
isEmptyв классеAbstractCollection<E> - Возвращает:
-
true, если эта коллекция не содержит элементов
size
public int size()
Integer.MAX_VALUE элементов, возвращается Integer.MAX_VALUE. Обратите внимание, что, в отличие от большинства коллекций, этот метод НЕ выполняется за постоянное время. Из-за асинхронной природы этих дек для определения текущего количества элементов необходимо обойти их все и подсчитать элементы. Кроме того, во время выполнения метода размер может измениться, и в этом случае возвращаемый результат будет неточным. Поэтому этот метод обычно не очень полезен в многопоточных приложениях.
remove
public boolean remove(Object o)
e, такой что o.equals(e) (если такой элемент существует). Возвращает true, если дека содержала указанный элемент (или, что эквивалентно, если в результате вызова дека изменилась). Этот метод эквивалентен removeFirstOccurrence(Object).
- Определено в:
-
removeв интерфейсеCollection<E> - Определено в:
-
removeв интерфейсеDeque<E> - Переопределяет:
-
removeв классеAbstractCollection<E> - Параметры:
-
o— элемент, который необходимо удалить из этой деки, если он присутствует - Возвращает:
-
true, если дека содержала указанный элемент - Исключения:
-
NullPointerException— если указанный элемент равен null
addAll
public boolean addAll(Collection<? extends E> c)
addAll деки самой в себя приводит к IllegalArgumentException.- Определено в:
-
addAllв интерфейсеCollection<E> - Определено в:
-
addAllв интерфейсеDeque<E> - Переопределяет:
-
addAllв классеAbstractCollection<E> - Параметры:
-
c— элементы, которые необходимо вставить в эту деку - Возвращает:
-
true, если в результате вызова дека изменилась - Исключения:
-
NullPointerException— если указанная коллекция или любой из её элементов равен null -
IllegalArgumentException— если коллекция является этой декой - См. также:
clear
public void clear()
- Определено в:
-
clearв интерфейсеCollection<E> - Переопределяет:
-
clearв классеAbstractCollection<E>
toArray
public Object[] toArray()
Возвращаемый массив является «безопасным»: дека не хранит на него ссылок. (Иными словами, этот метод должен выделить новый массив.) Поэтому вызывающий код может свободно изменять возвращённый массив.
Этот метод служит связующим звеном между API для работы с массивами и API для работы с коллекциями.
- Определено в:
-
toArrayв интерфейсеCollection<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Возвращает:
- массив, содержащий все элементы этой деки
toArray
public <T> T[] toArray(T[] a)
Если дека помещается в указанный массив с запасом (то есть в массиве больше элементов, чем в деке), элемент массива сразу после конца деки устанавливается в null.
Как и метод toArray(), этот метод служит связующим звеном между API для работы с массивами и API для работы с коллекциями. Кроме того, этот метод позволяет точно управлять типом выходного массива во время выполнения и при определённых обстоятельствах помогает сократить затраты на выделение памяти.
Предположим, что x — дека, содержащая только строки. Следующий код можно использовать для копирования элементов деки в новый массив типа String:
String[] y = x.toArray(new String[0]); Обратите внимание, что toArray(new Object[0]) функционально идентичен toArray().- Определено в:
-
toArrayв интерфейсеCollection<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Параметры типа:
T— тип компонентов массива, в котором будет храниться коллекция- Параметры:
-
a— массив, в который помещаются элементы деки, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа во время выполнения - Возвращает:
- массив, содержащий все элементы этой деки
- Исключения:
-
ArrayStoreException— если тип указанного массива во время выполнения не является суперклассом типа во время выполнения каждого элемента этой деки -
NullPointerException— если указанный массив равен null
iterator
public Iterator<E> iterator()
Возвращаемый итератор является слабо согласованным.
descendingIterator
public Iterator<E> descendingIterator()
Возвращаемый итератор является слабо согласованным.
- Определено в:
-
descendingIteratorв интерфейсеDeque<E> - Возвращает:
- итератор элементов этой деки в обратном порядке
spliterator
public Spliterator<E> spliterator()
Spliterator для обхода элементов этой деки. Возвращаемый сплитератор является слабо согласованным.
Spliterator сообщает о поддержке Spliterator.CONCURRENT, Spliterator.ORDERED и Spliterator.NONNULL.
- Определено в:
-
spliteratorв интерфейсеCollection<E> - Определено в:
-
spliteratorв интерфейсеIterable<E> - Примечание по реализации:
SpliteratorреализуетtrySplit, чтобы обеспечить ограниченный параллелизм.- Возвращает:
Spliteratorдля обхода элементов этой деки- Начиная с версии:
- 1.8
removeIf
public boolean removeIf(Predicate<? super E> filter)
Collection- Указано в:
-
removeIfв интерфейсеCollection<E> - Параметры:
-
filter- предикат, который возвращаетtrueдля элементов, подлежащих удалению - Возвращает:
-
true, если были удалены какие-либо элементы - Вызывает:
-
NullPointerException- если указанный фильтр равен null
removeAll
public boolean removeAll(Collection<?> c)
AbstractCollection- Указано в:
-
removeAllв интерфейсеCollection<E> - Переопределяет:
-
removeAllв классеAbstractCollection<E> - Параметры:
-
c- коллекция, содержащая элементы, которые нужно удалить из этой коллекции - Возвращает:
-
true, если эта коллекция изменилась в результате вызова - Вызывает:
-
NullPointerException- если эта коллекция содержит один или несколько элементов null, а указанная коллекция не поддерживает элементы null (необязательно), или если указанная коллекция равна null - См. также:
retainAll
public boolean retainAll(Collection<?> c)
AbstractCollection- Указано в:
-
retainAllв интерфейсеCollection<E> - Переопределяет:
-
retainAllв классеAbstractCollection<E> - Параметры:
-
c- коллекция, содержащая элементы, которые нужно сохранить в этой коллекции - Возвращает:
-
true, если эта коллекция изменилась в результате вызова - Вызывает:
-
NullPointerException- если эта коллекция содержит один или несколько элементов null, а указанная коллекция не допускает элементы null (необязательно), или если указанная коллекция равна null - См. также:
forEach
public void forEach(Consumer<? super E> action)
IterableIterable, пока не будут обработаны все элементы или действие не вызовет исключение. Если порядок итерации определен, действия выполняются в этом порядке. Исключения, вызванные действием, передаются вызывающему коду. Поведение этого метода не определено, если действие вызывает побочные эффекты, изменяющие исходный источник элементов, за исключением случаев, когда переопределяющий класс задает политику параллельной модификации.
- Указано в:
-
forEachв интерфейсеIterable<E> - Параметры:
-
action- действие, выполняемое для каждого элемента - Вызывает:
-
NullPointerException- если указанное действие равно null
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.