Spec-Zone.ru › OpenJDK 8

Класс 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)

Возвращает true, если эта очередь содержит хотя бы один элемент e, такой что o.equals(e).

Iterator<E> descendingIterator()

Возвращает итератор по элементам в этой очереди в обратном порядке.

E element()

Возвращает голову очереди, представленной этой очередью (то есть первый элемент этой очереди), не удаляя её.

E getFirst()

Возвращает первый элемент этой очереди, не удаляя его.

E getLast()

Возвращает последний элемент этой очереди, не удаляя его.

boolean isEmpty()

Возвращает true, если эта коллекция не содержит элементов.

Iterator<E> iterator()

Возвращает итератор по элементам в этой очереди в правильном порядке.

boolean offer(E e)

Вставляет указанный элемент в конец этой очереди.

boolean offerFirst(E e)

Вставляет указанный элемент в начало этой очереди.

boolean offerLast(E e)

Вставляет указанный элемент в конец этой очереди.

E peek()

Возвращает голову очереди, представленной этой очередью (то есть первый элемент этой очереди), не удаляя её, или возвращает null, если эта очередь пуста.

E peekFirst()

Возвращает первый элемент этой очереди, не удаляя его, или возвращает null, если эта очередь пуста.

E peekLast()

Возвращает последний элемент этой очереди, не удаляя его, или возвращает null, если эта очередь пуста.

E poll()

Возвращает и удаляет голову очереди, представленной этой очередью (то есть первый элемент этой очереди), или возвращает null, если эта очередь пуста.

E pollFirst()

Возвращает и удаляет первый элемент этой очереди, или возвращает null, если эта очередь пуста.

E pollLast()

Возвращает и удаляет последний элемент этой очереди, или возвращает null, если эта очередь пуста.

E pop()

Извлекает элемент из стека, представленного этой очередью.

void push(E e)

Добавляет элемент в стек, представленный этой очередью (то есть в начало этой очереди), если это возможно сделать немедленно без нарушения ограничений на вместимость, бросая исключение IllegalStateException, если места нет.

E remove()

Возвращает и удаляет голову очереди, представленной этой очередью (то есть первый элемент этой очереди).

boolean remove(Object o)

Удаляет первый элемент e, такой что o.equals(e), если такой элемент существует в этой очереди.

E removeFirst()

Возвращает и удаляет первый элемент этой очереди.

boolean removeFirstOccurrence(Object o)

Удаляет первый элемент e, такой что o.equals(e), если такой элемент существует в этой очереди.

E removeLast()

Возвращает и удаляет последний элемент этой очереди.

boolean removeLastOccurrence(Object o)

Удаляет последний элемент e, такой что o.equals(e), если такой элемент существует в этой очереди.

int size()

Возвращает количество элементов в этой очереди.

Spliterator<E> spliterator()

Возвращает 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, если эта дека пуста.

Указано в:
peekLast в интерфейсе Deque<E>
Возвращает:
конец этой деки или 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, если эта дека пуста.

Указано в:
pollLast в интерфейсе Deque<E>
Возвращает:
конец этой деки или 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()

Возвращает итератор по элементам в этом деке в правильной последовательности. Элементы будут возвращаться в порядке от первого (головы) к последнему (хвосту).

Возвращаемый итератор является слабо согласованным.

Определено в:
iterator в интерфейсе Iterable<E>
Определено в:
iterator в интерфейсе Collection<E>
Определено в:
iterator в интерфейсе Deque<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 в интерфейсе 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API