Класс ConcurrentLinkedDeque<E>
- Type Parameters:
-
E- тип элементов, хранимых в этой очереди
- Все реализованные интерфейсы:
-
Serializable,Iterable<E>,Collection<E>,Deque<E>,Queue<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.
- Since:
- 1.7
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ConcurrentLinkedDeque() |
Создаёт пустую очередь с двумя концами. |
ConcurrentLinkedDeque |
Создаёт очередь с двумя концами, содержащую элементы заданного набора, добавляемые в порядке обхода итератора набора. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в конец этой очереди с двумя концами. |
boolean |
addAll |
Добавляет все элементы из заданного набора в конец этой очереди с двумя концами в порядке, в котором они возвращаются итератором заданного набора. |
void |
addFirst |
Вставляет указанный элемент в начало этой очереди с двумя концами. |
void |
addLast |
Вставляет указанный элемент в конец этой очереди с двумя концами. |
void |
clear() |
Удаляет все элементы из этой очереди с двумя концами. |
boolean |
contains |
Возвращает значение true, если эта очередь с двумя концами содержит указанный элемент. |
Iterator<E> |
descendingIterator() |
Возвращает итератор по элементам этой очереди с двумя концами в обратном последовательном порядке. |
E |
element() |
Извлекает, но не удаляет, голову очереди, представленной этой очередью с двумя концами (то есть, первый элемент этой очереди с двумя концами). |
void |
forEach |
Выполняет заданное действие для каждого элемента Iterable до обработки всех элементов или возникновения исключения. |
E |
getFirst() |
Извлекает, но не удаляет, первый элемент этой очереди с двумя концами. |
E |
getLast() |
Извлекает, но не удаляет, последний элемент этой очереди с двумя концами. |
boolean |
isEmpty() |
Возвращает значение true, если этот набор не содержит элементов. |
Iterator<E> |
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<E> |
spliterator() |
Возвращает Spliterator по элементам этой очереди с двумя концами. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этой очереди с двумя концами в правильной последовательности (от первого к последнему элементу). |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой очереди с двумя концами в правильной последовательности (от первого к последнему элементу); тип времени выполнения возвращаемого массива - тип заданного массива. |
Методы, объявленные в классе 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> - Параметры:
-
e- добавляемый элемент - Исключения:
-
NullPointerException- если указанный элемент равен null
addLast
public void addLast(E e)
IllegalStateException. Этот метод эквивалентен add(E).
- Определено в:
-
addLastв интерфейсеDeque<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
public E peekFirst()
Dequenull , если эта очередь пуста.- Определено в:
-
peekFirstв интерфейсеDeque<E> - Возвращает:
- начало этой очереди или
null, если эта очередь пуста
peekLast
public E peekLast()
Dequenull , если эта очередь пуста.- Определено в:
-
peekLastв интерфейсеDeque<E> - Возвращает:
- хвост этой очереди или
null, если эта очередь пуста
getFirst
public E getFirst()
DequepeekFirst только тем, что выбрасывает исключение, если эта очередь пуста.- Определено в:
-
getFirstв интерфейсеDeque<E> - Возвращает:
- начало этой очереди
- Исключения:
-
NoSuchElementException- если эта очередь пуста
getLast
public E getLast()
DequepeekLast только тем, что выбрасывает исключение, если эта очередь пуста.- Определено в:
-
getLastв интерфейсеDeque<E> - Возвращает:
- хвост этой очереди
- Исключения:
-
NoSuchElementException- если эта очередь пуста
pollFirst
public E pollFirst()
Dequenull , если эта очередь пуста.- Определено в:
-
pollFirstв интерфейсеDeque<E> - Возвращает:
- начало этой очереди или
null, если эта очередь пуста
pollLast
public E pollLast()
Dequenull , если эта очередь пуста.- Определено в:
-
pollLastв интерфейсеDeque<E> - Возвращает:
- хвост этой очереди или
null, если эта очередь пуста
removeFirst
public E removeFirst()
DequepollFirst только тем, что выбрасывает исключение, если эта очередь пуста.- Определено в:
-
removeFirstв интерфейсеDeque<E> - Возвращает:
- начало этой очереди
- Исключения:
-
NoSuchElementException- если эта очередь пуста
removeLast
public E removeLast()
DequepollLast только тем, что выбрасывает исключение, если эта очередь пуста.- Определено в:
-
removeLastв интерфейсеDeque<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().
- Определено в:
-
pollв интерфейсеDeque<E> - Определено в:
-
pollв интерфейсеQueue<E> - Возвращает:
- первый элемент этой очереди или
null, если эта очередь пуста
peek
public E peek()
Dequenull если этот дек пуст. Этот метод эквивалентен Deque.peekFirst().
- Указано в:
-
peekв интерфейсеDeque<E> - Указано в:
-
peekв интерфейсеQueue<E> - Возвращает:
- голова очереди, представленная этим деком, или
nullесли этот дек пуст
remove
public E remove()
Dequepoll() только тем, что выбрасывает исключение, если этот дек пуст. Этот метод эквивалентен Deque.removeFirst().
- Указано в:
-
removeв интерфейсеDeque<E> - Указано в:
-
removeв интерфейсеQueue<E> - Возвращает:
- голова очереди, представленная этим деком
- Исключение:
-
NoSuchElementException- если этот дек пуст
pop
public E pop()
DequeЭтот метод эквивалентен Deque.removeFirst().
- Указано в:
-
popв интерфейсеDeque<E> - Возвращает:
- элемент в начале этого дека (который является вершиной стека, представленного этим деком)
- Исключение:
-
NoSuchElementException- если этот дек пуст
element
public E element()
Dequepeek только тем, что выбрасывает исключение, если этот дек пуст. Этот метод эквивалентен Deque.getFirst().
- Указано в:
-
elementв интерфейсеDeque<E> - Указано в:
-
elementв интерфейсеQueue<E> - Возвращает:
- голова очереди, представленная этим деком
- Исключение:
-
NoSuchElementException- если этот дек пуст
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. Обратите внимание, что, в отличие от большинства коллекций, этот метод НЕ является операцией постоянного времени. Из-за асинхронной природы этих деков, определение текущего количества элементов требует обхода всех элементов для их подсчета. Кроме того, размер может измениться во время выполнения этого метода, в этом случае возвращаемый результат будет неточным. Поэтому этот метод обычно не очень полезен в конкурирующих приложениях.
- Указано в:
-
sizeв интерфейсеCollection<E> - Указано в:
-
sizeв интерфейсеDeque<E> - Возвращает:
- количество элементов в этом деке
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- если коллекция является этим деком - См. также:
очистить
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
итератор
public Iterator<E> iterator()
Возвращаемый итератор является слабо согласованным.
- Определено в:
-
iteratorв интерфейсеCollection<E> - Определено в:
-
iteratorв интерфейсеDeque<E> - Определено в:
-
iteratorв интерфейсеIterable<E> - Переопределяет:
-
iteratorв классеAbstractCollection<E> - Возвращает:
- итератор по элементам этого двустороннего списка в правильной последовательности
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, 2021, 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/17/docs/api/java.base/java/util/concurrent/ConcurrentLinkedDeque.html