Класс ConcurrentLinkedDeque<E>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.concurrent.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
Неограниченная конкурентная очередь deque, основанная на связанных узлах. Конкурентные операции вставки, удаления и доступа выполняются безопасно для нескольких потоков. Очередь deque является подходящим выбором, когда много потоков будут совместно использовать доступ к общему набору. Как и большинство других реализаций конкурентных коллекций, этот класс не допускает использование null элементов.
Итераторы и итераторы разбиения данных являются слабо согласованными.
Обратите внимание, что, в отличие от большинства коллекций, метод size является НЕ операцией с постоянной сложностью. Из-за асинхронной природы этих очередей, определение текущего количества элементов требует обхода элементов, и поэтому может сообщать неточные результаты, если эта коллекция изменяется во время обхода. Кроме того, массовые операции addAll, removeAll, retainAll, containsAll, equals, и toArray не гарантируют выполнения атомарно. Например, итератор, работающий одновременно с операцией addAll, может увидеть только часть добавленных элементов.
Этот класс и его итератор реализуют все необязательные методы интерфейсов Deque и Iterator.
Влияние согласованности памяти: как и в других конкурентных коллекциях, действия в потоке до помещения объекта в ConcurrentLinkedDeque предшествуют последующим действиям доступа или удаления этого элемента из ConcurrentLinkedDeque в другом потоке.
Этот класс является частью Java Collections Framework.
- Since:
- 1.7
- См. также:
- Сериализованная форма
Конструкторы
| Конструктор и описание |
|---|
ConcurrentLinkedDeque() Создаёт пустую очередь. |
ConcurrentLinkedDeque(Collection<? extends E> c) Создаёт очередь, изначально содержащую элементы заданного набора, добавленные в порядке обхода итератора набора. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
boolean |
add(E e) Вставляет указанный элемент в конец этой очереди. |
boolean |
addAll(Collection<? extends E> c) Добавляет все элементы из указанного набора в конец этой очереди в порядке, в котором они возвращаются итератором указанного набора. |
void |
addFirst(E e) Вставляет указанный элемент в начало этой очереди. |
void |
addLast(E e) Вставляет указанный элемент в конец этой очереди. |
void |
clear() Удаляет все элементы из этой очереди. |
boolean |
contains(Object o) Возвращает |
Iterator<E> |
descendingIterator() Возвращает итератор по элементам в этой очереди в обратном порядке. |
E |
element() Возвращает голову очереди, представленной этой очередью (то есть первый элемент этой очереди), не удаляя её. |
E |
getFirst() Возвращает первый элемент этой очереди, не удаляя его. |
E |
getLast() Возвращает последний элемент этой очереди, не удаляя его. |
boolean |
isEmpty() Возвращает |
Iterator<E> |
iterator() Возвращает итератор по элементам в этой очереди в правильном порядке. |
boolean |
offer(E e) Вставляет указанный элемент в конец этой очереди. |
boolean |
offerFirst(E e) Вставляет указанный элемент в начало этой очереди. |
boolean |
offerLast(E e) Вставляет указанный элемент в конец этой очереди. |
E |
peek() Возвращает голову очереди, представленной этой очередью (то есть первый элемент этой очереди), не удаляя её, или возвращает |
E |
peekFirst() Возвращает первый элемент этой очереди, не удаляя его, или возвращает |
E |
peekLast() Возвращает последний элемент этой очереди, не удаляя его, или возвращает |
E |
poll() Возвращает и удаляет голову очереди, представленной этой очередью (то есть первый элемент этой очереди), или возвращает |
E |
pollFirst() Возвращает и удаляет первый элемент этой очереди, или возвращает |
E |
pollLast() Возвращает и удаляет последний элемент этой очереди, или возвращает |
E |
pop() Извлекает элемент из стека, представленного этой очередью. |
void |
push(E e) Добавляет элемент в стек, представленный этой очередью (то есть в начало этой очереди), если это возможно сделать немедленно без нарушения ограничений на вместимость, бросая исключение |
E |
remove() Возвращает и удаляет голову очереди, представленной этой очередью (то есть первый элемент этой очереди). |
boolean |
remove(Object o) Удаляет первый элемент |
E |
removeFirst() Возвращает и удаляет первый элемент этой очереди. |
boolean |
removeFirstOccurrence(Object o) Удаляет первый элемент |
E |
removeLast() Возвращает и удаляет последний элемент этой очереди. |
boolean |
removeLastOccurrence(Object o) Удаляет последний элемент |
int |
size() Возвращает количество элементов в этой очереди. |
Spliterator<E> |
spliterator() Возвращает |
Object[] |
toArray() Возвращает массив, содержащий все элементы в этой очереди в правильном порядке (от первого к последнему элементу). |
<T> T[] |
toArray(T[] a) Возвращает массив, содержащий все элементы в этой очереди в правильном порядке (от первого к последнему элементу); тип времени выполнения возвращаемого массива — тип указанного массива. |
Методы, унаследованные от класса java.util.AbstractCollection
containsAll, removeAll, retainAll, toString Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Методы, унаследованные от интерфейса java.util.Collection
containsAll, equals, hashCode, parallelStream, removeAll, removeIf, retainAll, stream Методы, унаследованные от интерфейса java.lang.Iterable
forEach Конструкторы
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()
Описание скопировано из интерфейса: Deque
Извлекает, но не удаляет, первый элемент этой деки или возвращает null, если эта дека пуста.
- Указано в:
-
peekFirstв интерфейсеDeque<E> - Возвращает:
- начало этой деки или
null, если эта дека пуста
peekLast
public E peekLast()
Описание скопировано из интерфейса: Deque
Извлекает, но не удаляет, последний элемент этой деки или возвращает null, если эта дека пуста.
getFirst
public E getFirst()
Описание скопировано из интерфейса: Deque
Извлекает, но не удаляет, первый элемент этой деки. Этот метод отличается от peekFirst только тем, что он выдает исключение, если эта дека пуста.
- Указано в:
-
getFirstв интерфейсеDeque<E> - Возвращает:
- начало этой деки
- Исключения:
-
NoSuchElementException- если эта дека пуста
getLast
public E getLast()
Описание скопировано из интерфейса: Deque
Извлекает, но не удаляет, последний элемент этой деки. Этот метод отличается от peekLast только тем, что он выдает исключение, если эта дека пуста.
- Указано в:
-
getLastв интерфейсеDeque<E> - Возвращает:
- конец этой деки
- Исключения:
-
NoSuchElementException- если эта дека пуста
pollFirst
public E pollFirst()
Описание скопировано из интерфейса: Deque
Извлекает и удаляет первый элемент этой деки или возвращает null, если эта дека пуста.
- Указано в:
-
pollFirstв интерфейсеDeque<E> - Возвращает:
- начало этой деки или
null, если эта дека пуста
pollLast
public E pollLast()
Описание скопировано из интерфейса: Deque
Извлекает и удаляет последний элемент этой деки или возвращает null, если эта дека пуста.
removeFirst
public E removeFirst()
Описание скопировано из интерфейса: Deque
Извлекает и удаляет первый элемент этой деки. Этот метод отличается от pollFirst только тем, что он выдает исключение, если эта дека пуста.
- Указано в:
-
removeFirstв интерфейсеDeque<E> - Возвращает:
- начало этой деки
- Исключения:
-
NoSuchElementException- если эта дека пуста
removeLast
public E removeLast()
Описание скопировано из интерфейса: Deque
Извлекает и удаляет последний элемент этой деки. Этот метод отличается от pollLast только тем, что он выдает исключение, если эта дека пуста.
- Указано в:
-
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()
Описание скопировано из интерфейса: Deque
Извлекает и удаляет начало очереди, представленной этой декой (другими словами, первый элемент этой деки), или возвращает null, если эта дека пуста.
Этот метод эквивалентен Deque.pollFirst().
- Указано в:
-
pollв интерфейсеDeque<E> - Указано в:
-
pollв интерфейсеQueue<E> - Возвращает:
- первый элемент этой деки или
null, если эта дека пуста
peek
public E peek()
Описание скопировано из интерфейса: Deque
Извлекает, но не удаляет, начало очереди, представленной этой декой (другими словами, первый элемент этой деки), или возвращает null, если эта дека пуста.
Этот метод эквивалентен Deque.peekFirst().
- Указано в:
-
peekв интерфейсеDeque<E> - Указано в:
-
peekв интерфейсеQueue<E> - Возвращает:
- начало очереди, представленной этой декой, или
null, если эта дека пуста
remove
public E remove()
Описание скопировано из интерфейса: Deque
Извлекает и удаляет начало очереди, представленной этой декой (другими словами, первый элемент этой деки). Этот метод отличается от poll только тем, что он выдает исключение, если эта дека пуста.
Этот метод эквивалентен Deque.removeFirst().
- Указано в:
-
removeв интерфейсеDeque<E> - Указано в:
-
removeв интерфейсеQueue<E> - Возвращает:
- начало очереди, представленной этой декой
- Исключения:
-
NoSuchElementException- если эта дека пуста
pop
public E pop()
Описание скопировано из интерфейса: Deque
Извлекает элемент из стека, представленного этим деком. Другими словами, удаляет и возвращает первый элемент этого дека.
Этот метод эквивалентен Deque.removeFirst().
- Определено в:
-
popв интерфейсеDeque<E> - Возвращает:
- элемент в начале этого дека (который является вершиной стека, представленного этим деком)
- Выбрасывает:
-
NoSuchElementException- если этот дек пуст
element
public E element()
Описание скопировано из интерфейса: Deque
Возвращает, но не удаляет, голову очереди, представленной этим деком (другими словами, первый элемент этого дека). Этот метод отличается от peek только тем, что выбрасывает исключение, если этот дек пуст.
Этот метод эквивалентен Deque.getFirst().
- Определено в:
-
elementв интерфейсеDeque<E> - Определено в:
-
elementв интерфейсеQueue<E> - Возвращает:
- голову очереди, представленной этим деком
- Выбрасывает:
-
NoSuchElementException- если этот дек пуст
push
public void push(E e)
Описание скопировано из интерфейса: Deque
Помещает элемент в стек, представленный этим деком (другими словами, в начало этого дека), если это возможно сделать немедленно без нарушения ограничений по емкости, выбрасывая IllegalStateException , если в настоящее время нет места.
Этот метод эквивалентен Deque.addFirst(E).
- Определено в:
-
pushв интерфейсеDeque<E> - Параметры:
-
e- элемент для помещения в стек - Выбрасывает:
-
NullPointerException- если указанный элемент равен null, и этот дек не допускает null-элементов
removeFirstOccurrence
public boolean removeFirstOccurrence(Object o)
Удаляет первый элемент e такой, что o.equals(e), если такой элемент существует в этом деке. Если дек не содержит элемент, он остается без изменений.
- Определено в:
-
removeFirstOccurrenceв интерфейсеDeque<E> - Параметры:
-
o- элемент, который нужно удалить из этого дека, если он присутствует - Возвращает:
-
trueесли дек содержал указанный элемент - Выбрасывает:
-
NullPointerException- если указанный элемент равен null
removeLastOccurrence
public boolean removeLastOccurrence(Object o)
Удаляет последний элемент e такой, что o.equals(e), если такой элемент существует в этом деке. Если дек не содержит элемент, он остается без изменений.
- Определено в:
-
removeLastOccurrenceв интерфейсеDeque<E> - Параметры:
-
o- элемент, который нужно удалить из этого дека, если он присутствует - Возвращает:
-
trueесли дек содержал указанный элемент - Выбрасывает:
-
NullPointerException- если указанный элемент равен null
contains
public boolean contains(Object o)
Возвращает 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> - Определено в:
-
sizeв классеAbstractCollection<E> - Возвращает:
- количество элементов в этом деке
remove
public boolean remove(Object o)
Удаляет первый элемент e такой, что o.equals(e), если такой элемент существует в этом деке. Если дек не содержит элемент, он остается без изменений.
- Определено в:
-
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в классеAbstractCollection<E> - Параметры:
-
c- элементы, которые необходимо вставить в этот дек - Возвращает:
-
trueесли этот дек изменился в результате вызова - Выбрасывает:
-
NullPointerException- если указанная коллекция или любой из ее элементов равны null -
IllegalArgumentException- если коллекция равна этому деку - См. также:
AbstractCollection.add(Object)
clear
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в интерфейсеIterable<E> - Определено в:
-
spliteratorв интерфейсеCollection<E> - Примечание реализации:
SpliteratorреализуетtrySplitдля поддержки ограниченного параллелизма.- Возвращает:
Spliteratorпо элементам в этом деке- С:
- 1.8
© 1993, 2020, 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.