Класс ConcurrentLinkedDeque<E>
- Type Parameters:
-
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() |
Создаёт пустой двусторонний список. |
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 |
Возвращает массив, содержащий все элементы этого двустороннего списка в правильной последовательности (от первого до последнего элемента); тип времени выполнения возвращаемого массива — тип указанного массива. |
Методы, объявленные в классе 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
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> - Определено в:
-
getFirstв интерфейсеSequencedCollection<E> - Возвращает:
- голова этой очереди
- Исключения:
-
NoSuchElementException- если эта очередь пуста
getLast
public E getLast()
DequepeekLast только тем, что он генерирует исключение, если эта очередь пуста.- Определено в:
-
getLastв интерфейсеDeque<E> - Определено в:
-
getLastв интерфейсеSequencedCollection<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> - Определено в:
-
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().
- Определено в:
-
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)
IllegalArgumentException.- Specified by:
-
addAllв интерфейсеCollection<E> - Specified by:
-
addAllв интерфейсеDeque<E> - Overrides:
-
addAllв классеAbstractCollection<E> - Parameters:
-
c- элементы, которые нужно вставить в эту очередь - Returns:
-
trueесли эта очередь изменилась в результате вызова - Throws:
-
NullPointerException- если указанная коллекция или любой из её элементов равны null -
IllegalArgumentException- если коллекция является этой очередью - See Also:
clear
public void clear()
- Specified by:
-
clearв интерфейсеCollection<E> - Overrides:
-
clearв классеAbstractCollection<E>
toArray
public Object[] toArray()
Возвращаемый массив будет «безопасным» в том смысле, что ссылки на него не сохраняются этой очередью. (Другими словами, этот метод должен выделить новый массив). Таким образом, вызывающая сторона свободна изменять возвращаемый массив.
Этот метод действует как мост между массивами и коллекциями.
- Specified by:
-
toArrayв интерфейсеCollection<E> - Overrides:
-
toArrayв классеAbstractCollection<E> - Returns:
- массив, содержащий все элементы этой очереди
toArray
public <T> T[] toArray(T[] a)
Если эта очередь помещается в указанный массив с избытком места (т. е. массив имеет больше элементов, чем эта очередь), элемент в массиве непосредственно за концом очереди устанавливается в null.
Как и метод toArray(), этот метод действует как мост между массивами и коллекциями. Кроме того, этот метод позволяет точно управлять типом времени выполнения выходного массива и в определённых случаях может использоваться для экономии затрат на выделение памяти.
Предположим, что x — это очередь, известно, что она содержит только строки. Следующий код может быть использован для выгрузки очереди в новый выделенный массив String:
String[] y = x.toArray(new String[0]); Обратите внимание, что toArray(new Object[0]) выполняет ту же функцию, что и toArray().- Specified by:
-
toArrayв интерфейсеCollection<E> - Overrides:
-
toArrayв классеAbstractCollection<E> - Type Parameters:
-
T- тип компонента массива, который должен содержать коллекцию - Parameters:
-
a- массив, в который должны быть помещены элементы очереди, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа времени выполнения - Returns:
- массив, содержащий все элементы этой очереди
- Throws:
-
ArrayStoreException- если тип времени выполнения указанного массива не является супертипом типа времени выполнения каждого элемента в этой очереди -
NullPointerException- если указанный массив равен null
iterator
public Iterator<E> iterator()
Возвращаемый итератор является слабо согласованным.
- Specified by:
-
iteratorв интерфейсеCollection<E> - Specified by:
-
iteratorв интерфейсеDeque<E> - Specified by:
-
iteratorв интерфейсеIterable<E> - Specified by:
-
iteratorв классеAbstractCollection<E> - Returns:
- итератор по элементам в этой очереди в правильной последовательности
descendingIterator
public Iterator<E> descendingIterator()
Возвращаемый итератор является слабо согласованным.
- Specified by:
-
descendingIteratorв интерфейсеDeque<E> - Returns:
- итератор по элементам в этой очереди в обратном порядке
spliterator
public Spliterator<E> spliterator()
Spliterator по элементам в этой очереди. Возвращаемый разделитель является слабо согласованным.
Разделитель Spliterator сообщает о Spliterator.CONCURRENT, Spliterator.ORDERED и Spliterator.NONNULL.
- Specified by:
-
spliteratorв интерфейсеCollection<E> - Specified by:
-
spliteratorв интерфейсеIterable<E> - Implementation Note:
SpliteratorреализуетtrySplitдля разрешения ограниченного параллелизма.- Returns:
Spliteratorпо элементам в этой очереди- Since:
- 1.8
removeIf
public boolean removeIf(Predicate<? super E> filter)
Collection- Specified by:
-
removeIfв интерфейсеCollection<E> - Parameters:
-
filter- предикат, который возвращаетtrueдля удаляемых элементов - Returns:
-
trueесли какие-либо элементы были удалены - Throws:
-
NullPointerException- если указанный фильтр равен null
removeAll
public boolean removeAll(Collection<?> c)
AbstractCollection- Specified by:
-
removeAllв интерфейсеCollection<E> - Overrides:
-
removeAllв классеAbstractCollection<E> - Parameters:
-
c- коллекция, содержащая элементы, которые нужно удалить из этой коллекции - Returns:
-
trueесли эта коллекция изменилась в результате вызова - Throws:
-
NullPointerException- если эта коллекция содержит один или несколько null-элементов, а указанная коллекция не поддерживает null-элементы (необязательно), или если указанная коллекция равна null - See Also:
retainAll
public boolean retainAll(Collection<?> c)
AbstractCollection- Specified by:
-
retainAllв интерфейсеCollection<E> - Overrides:
-
retainAllв классеAbstractCollection<E> - Parameters:
-
c- коллекция, содержащая элементы, которые нужно сохранить в этой коллекции - Returns:
-
trueесли эта коллекция изменилась в результате вызова - Throws:
-
NullPointerException- если эта коллекция содержит один или несколько null-элементов, а указанная коллекция не допускает null-элементов (необязательно), или если указанная коллекция равна null - See Also:
forEach
public void forEach(Consumer<? super E> action)
IterableIterable до тех пор, пока все элементы не будут обработаны или действие не выбросит исключение. Действия выполняются в порядке итерации, если этот порядок указан. Исключение, выброшенное действием, передаётся вызывающей стороне. Поведение этого метода не определено, если действие выполняет побочные эффекты, изменяющие исходный источник элементов, если только переопределяющий класс не указал политику одновременного изменения.
- Определено в:
-
forEachв интерфейсеIterable<E> - Параметры:
-
action- Действие, которое должно быть выполнено для каждого элемента - Исключения:
-
NullPointerException- если указанное действие равно null
© 1993, 2023, 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/21/docs/api/java.base/java/util/concurrent/ConcurrentLinkedDeque.html