Класс 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
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе Collection
containsAll, equals, hashCode, parallelStream, stream, toArray
Подробное описание конструкторов
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
public E peekLast()
Dequenull, если очередь пуста.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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ConcurrentLinkedDeque.html