Класс 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
null элементов. Итераторы и разделители являются слабо согласованными.
Обратите внимание, что, в отличие от большинства коллекций, метод size НЕ является операцией с постоянной сложностью. Из-за асинхронной природы этих очередей определение текущего количества элементов требует обхода элементов, и поэтому может сообщать неточную информацию, если эта коллекция изменяется во время обхода.
Массовые операции, которые добавляют, удаляют или проверяют несколько элементов, такие как addAll(java.util.Collection<? extends E>), removeIf(java.util.function.Predicate<? super E>) или forEach(java.util.function.Consumer<? super E>), не гарантируют атомарное выполнение. Например, обход forEach, конкурирующий с операцией
addAll, может наблюдать только некоторые добавленные элементы.
Этот класс и его итератор реализуют все необязательные методы интерфейсов Deque и Iterator.
Эффекты согласованности памяти: Как и в других конкурентных коллекциях, действия в потоке перед размещением объекта в ConcurrentLinkedDeque предшествуют действиям, последующим за доступом или удалением этого элемента из ConcurrentLinkedDeque в другом потоке.
Этот класс является членом Java Collections Framework.
- С:
- 1.7
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ConcurrentLinkedDeque() |
Создаёт пустой deque. |
ConcurrentLinkedDeque |
Создаёт deque, содержащий элементы заданного набора, добавленные в порядке обхода итератора набора. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в конец данного deque. |
boolean |
addAll |
Добавляет все элементы из заданного набора в конец данного deque в порядке, в котором они возвращаются итератором заданного набора. |
void |
addFirst |
Вставляет указанный элемент в начало данного deque. |
void |
addLast |
Вставляет указанный элемент в конец данного deque. |
void |
clear() |
Удаляет все элементы из данного deque. |
boolean |
contains |
Возвращает значение true, если данный deque содержит указанный элемент. |
Iterator |
descendingIterator() |
Возвращает итератор по элементам данного deque в обратном порядке. |
E |
element() |
Возвращает, но не удаляет, голову очереди, представленную данным deque (другими словами, первый элемент данного deque). |
void |
forEach |
Выполняет данное действие для каждого элемента Iterable, пока все элементы не будут обработаны или действие не выбросит исключение. |
E |
getFirst() |
Возвращает, но не удаляет, первый элемент данного deque. |
E |
getLast() |
Возвращает, но не удаляет, последний элемент данного deque. |
boolean |
isEmpty() |
Возвращает значение true, если данный набор не содержит элементов. |
Iterator |
iterator() |
Возвращает итератор по элементам данного deque в правильном порядке. |
boolean |
offer |
Вставляет указанный элемент в конец данного deque. |
boolean |
offerFirst |
Вставляет указанный элемент в начало данного deque. |
boolean |
offerLast |
Вставляет указанный элемент в конец данного deque. |
E |
peek() |
Возвращает, но не удаляет, голову очереди, представленную данным deque (другими словами, первый элемент данного deque), или возвращает null, если данный deque пустой. |
E |
peekFirst() |
Возвращает, но не удаляет, первый элемент данного deque, или возвращает null, если данный deque пустой. |
E |
peekLast() |
Возвращает, но не удаляет, последний элемент данного deque, или возвращает null, если данный deque пустой. |
E |
poll() |
Возвращает и удаляет голову очереди, представленную данным deque (другими словами, первый элемент данного deque), или возвращает null, если данный deque пустой. |
E |
pollFirst() |
Возвращает и удаляет первый элемент данного deque, или возвращает null, если данный deque пустой. |
E |
pollLast() |
Возвращает и удаляет последний элемент данного deque, или возвращает null, если данный deque пустой. |
E |
pop() |
Извлекает элемент из стека, представленного данным deque. |
void |
push |
Добавляет элемент в стек, представленный данным deque (другими словами, в начало данного deque), если это возможно сделать немедленно, не нарушая ограничений по емкости, выбрасывая IllegalStateException, если свободно места нет. |
E |
remove() |
Возвращает и удаляет голову очереди, представленную данным deque (другими словами, первый элемент данного deque). |
boolean |
remove |
Удаляет первое вхождение указанного элемента из данного deque. |
boolean |
removeAll |
Удаляет из данного набора все элементы, которые также содержатся в заданном наборе (необязательная операция). |
E |
removeFirst() |
Возвращает и удаляет первый элемент данного deque. |
boolean |
removeFirstOccurrence |
Удаляет первое вхождение указанного элемента из данного deque. |
boolean |
removeIf |
Удаляет все элементы данного набора, которые удовлетворяют заданному предикату (необязательная операция). |
E |
removeLast() |
Возвращает и удаляет последний элемент данного deque. |
boolean |
removeLastOccurrence |
Удаляет последнее вхождение указанного элемента из данного deque. |
boolean |
retainAll |
Оставляет только элементы в данном наборе, которые содержатся в указанном наборе (необязательная операция). |
int |
size() |
Возвращает количество элементов в данном deque. |
Spliterator |
spliterator() |
Возвращает Spliterator по элементам данного deque. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы данного deque в правильном порядке (от первого до последнего элемента). |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы данного deque в правильном порядке (от первого до последнего элемента); тип возвращаемого массива соответствует заданному массиву. |
Методы, объявленные в классе java.util.AbstractCollection
containsAll, toString
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.util.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
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.- Specified by:
-
addin interfaceCollection<E> - Specified by:
-
addin interfaceDeque<E> - Specified by:
-
addin interfaceQueue<E> - Overrides:
-
addin classAbstractCollection<E> - Parameters:
-
e- элемент, присутствие которого в этом наборе нужно гарантировать - Returns:
-
true(как указано вCollection.add(E)) - Throws:
-
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().
- Specified by:
-
popin interfaceDeque<E> - Returns:
- элемент в начале этого очереди с двойным концом (который является вершиной стека, представленного этим очереди с двойным концом)
- Throws:
-
NoSuchElementException- если эта очередь с двойным концом пуста
element
public E element()
Dequepeek только тем, что он генерирует исключение, если эта очередь с двойным концом пуста. Этот метод эквивалентен методу Deque.getFirst().
push
public void push(E e)
DequeIllegalStateException, если свободно места нет. Этот метод эквивалентен методу Deque.addFirst(E).
- Specified by:
-
pushin interfaceDeque<E> - Parameters:
-
e- элемент для помещения в стек - Throws:
-
NullPointerException- если указанный элемент имеет значение null, и эта очередь с двойным концом не допускает null-элементы
removeFirstOccurrence
public boolean removeFirstOccurrence(Object o)
e такой, что o.equals(e) (если такой элемент существует). Возвращает true, если эта очередь с двойным концом содержала указанный элемент (или, что эквивалентно, если эта очередь с двойным концом изменилась в результате вызова).- Specified by:
-
removeFirstOccurrencein interfaceDeque<E> - Parameters:
-
o- элемент, который необходимо удалить из этой очереди с двойным концом, если он присутствует - Returns:
-
true, если очередь с двойным концом содержала указанный элемент - Throws:
-
NullPointerException- если указанный элемент имеет значение null
removeLastOccurrence
public boolean removeLastOccurrence(Object o)
e такой, что o.equals(e) (если такой элемент существует). Возвращает true, если эта очередь с двойным концом содержала указанный элемент (или, что эквивалентно, если эта очередь с двойным концом изменилась в результате вызова).- Specified by:
-
removeLastOccurrencein interfaceDeque<E> - Parameters:
-
o- элемент, который необходимо удалить из этой очереди с двойным концом, если он присутствует - Returns:
-
true, если очередь с двойным концом содержала указанный элемент - Throws:
-
NullPointerException- если указанный элемент имеет значение null
contains
public boolean contains(Object o)
true, если эта очередь с двойным концом содержит указанный элемент. Более формально, возвращает true, если и только если эта очередь с двойным концом содержит по крайней мере один элемент e такой, что o.equals(e).- Specified by:
-
containsin interfaceCollection<E> - Specified by:
-
containsin interfaceDeque<E> - Overrides:
-
containsin classAbstractCollection<E> - Parameters:
-
o- элемент, присутствие которого в этой очереди с двойным концом нужно проверить - Returns:
-
true, если эта очередь с двойным концом содержит указанный элемент
isEmpty
public boolean isEmpty()
true, если этот набор не содержит элементов.- Specified by:
-
isEmptyin interfaceCollection<E> - Overrides:
-
isEmptyin classAbstractCollection<E> - Returns:
-
true, если этот набор не содержит элементов
size
public int size()
Integer.MAX_VALUE элементов, она возвращает Integer.MAX_VALUE. Обратите внимание, что, в отличие от большинства наборов, этот метод НЕ является операцией с постоянной сложностью. Из-за асинхронного характера этих очередей с двойным концом определение текущего количества элементов требует обхода всех элементов, чтобы посчитать их. Кроме того, возможно, что размер изменится во время выполнения этого метода, в этом случае возвращённый результат будет неточен. Таким образом, этот метод обычно не очень полезен в приложениях с конкурентным выполнением.
удалить
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- если набор является этой очередью - См. также:
очистить
public void clear()
- Указано:
-
clearв интерфейсеCollection<E> - Переопределяет:
-
clearв классеAbstractCollection<E>
toArray
public Object[] toArray()
Возвращаемый массив будет «безопасным», так как ссылки на него не сохраняются в этой очереди. (Другими словами, этот метод должен выделить новый массив). Таким образом, вызывающая сторона может свободно изменять возвращаемый массив.
Этот метод действует как мост между основанными на массиве и основанными на коллекции API.
- Указано:
-
toArrayв интерфейсеCollection<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Возвращает:
- массив, содержащий все элементы в этой очереди
toArray
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в классе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 - См. также:
retainAll
public boolean retainAll(Collection<?> c)
AbstractCollection- Указано:
-
retainAllв интерфейсеCollection<E> - Переопределяет:
-
retainAllв классеAbstractCollection<E> - Параметры:
-
c- набор, содержащий элементы, которые должны быть сохранены в этом наборе - Возвращает:
-
true, если этот набор изменился в результате вызова - Исключение:
-
NullPointerException- если этот набор содержит один или несколько нулевых элементов, а указанный набор не допускает нулевых элементов (необязательно) или если указанный набор равен 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/ConcurrentLinkedDeque.html