Интерфейс Deque<E>

Параметры типа:
E - тип элементов, хранящихся в этой очереди с двумя концами
Все суперинтерфейсы:
Collection<E>, Iterable<E>, Queue<E>
Все известные подинтерфейсы:
BlockingDeque<E>
Все известные реализующие классы:
ArrayDeque, ConcurrentLinkedDeque, LinkedBlockingDeque, LinkedList
public interface Deque<E>
extends Queue<E>

Линейная коллекция, которая поддерживает вставку и удаление элементов с обоих концов. Название deque — сокращение от "double ended queue" и обычно произносится как "дек". Большинство Deque реализаций не устанавливают ограничений на количество элементов, но этот интерфейс также поддерживает деки с ограниченной емкостью и деки без ограничений на размер.

Этот интерфейс определяет методы для доступа к элементам на обоих концах очереди с двумя концами. Предусмотрены методы для вставки, удаления и просмотра элемента. Каждый из этих методов существует в двух формах: одна выбрасывает исключение, если операция завершается неудачно, а другая возвращает специальное значение (либо null, либо false, в зависимости от операции). Последняя форма операции вставки специально предназначена для использования с Deque реализациями с ограниченной емкостью; в большинстве реализаций операции вставки не могут завершиться неудачно.

Двенадцать описанных выше методов суммированы в следующей таблице:

Первый элемент (Голова) Последний элемент (Хвост)
Выбрасывает исключение Специальное значение Выбрасывает исключение Специальное значение
Вставка addFirst(e) offerFirst(e) addLast(e) offerLast(e)
Удаление removeFirst() pollFirst() removeLast() pollLast()
Просмотр getFirst() peekFirst() getLast() peekLast()

Этот интерфейс расширяет интерфейс Queue. Когда deque используется как очередь, результат — поведение FIFO (First-In-First-Out). Элементы добавляются в конец очереди с двумя концами и удаляются из начала. Методы, унаследованные от интерфейса Queue , точно эквивалентны методам Deque , как показано в следующей таблице:

Метод Queue Эквивалентный метод Deque
add(e) addLast(e)
offer(e) offerLast(e)
remove() removeFirst()
poll() pollFirst()
element() getFirst()
peek() peekFirst()

Deques также могут использоваться как стеки LIFO (Last-In-First-Out). Этот интерфейс следует использовать вместо устаревшего класса Stack. Когда deque используется как стек, элементы помещаются и извлекаются из начала очереди с двумя концами. Методы стека эквивалентны методам Deque , как указано в таблице ниже:

Метод стека Эквивалентный метод Deque
push(e) addFirst(e)
pop() removeFirst()
peek() getFirst()

Обратите внимание, что метод peek одинаково хорошо работает, когда deque используется как очередь или стек; в обоих случаях элементы берутся с начала очереди с двумя концами.

Этот интерфейс предоставляет два метода для удаления внутренних элементов: removeFirstOccurrence и removeLastOccurrence.

В отличие от интерфейса List, этот интерфейс не предоставляет поддержки индексированного доступа к элементам.

Хотя Deque реализации не обязаны запрещать вставку элементов null, их настоятельно рекомендуется это делать. Пользователям Deque реализаций, которые разрешают вставки элементов null, настоятельно рекомендуется не использовать возможность вставки null. Это связано с тем, что null используется в качестве специального значения возврата различными методами для указания того, что deque пуста.

Deque реализации обычно не определяют версий методов equals и hashCode на основе элементов, а вместо этого наследуют версии, основанные на идентификаторе, из класса Object.

Этот интерфейс является членом Java Collections Framework.

С момента:
1.6

Методы

Модификатор и тип Метод Описание
boolean add​(E e)

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

boolean addAll​(Collection<? extends E> c)

Добавляет все элементы из указанного набора в конец этого дека, как если бы вызывали addLast(E) для каждого из них в порядке, в котором они возвращаются итератором набора.

void addFirst​(E e)

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

void addLast​(E e)

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

boolean contains​(Object o)

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

Iterator<E> descendingIterator()

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

E element()

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

E getFirst()

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

E getLast()

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

Iterator<E> iterator()

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

boolean offer​(E e)

Вставляет указанный элемент в очередь, представленную этим деком (другими словами, в конец этого дека), если это можно сделать немедленно без нарушения ограничений по емкости, возвращая true при успехе и false если в данный момент нет места.

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 removeFirst()

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

boolean removeFirstOccurrence​(Object o)

Удаляет первое вхождение указанного элемента из этого дека.

E removeLast()

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

boolean removeLastOccurrence​(Object o)

Удаляет последнее вхождение указанного элемента из этого дека.

int size()

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

Методы, объявленные в интерфейсе java.util.Collection

clear, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray, toArray

Методы, объявленные в интерфейсе java.lang.Iterable

forEach

Методы

addFirst

void addFirst(E e)

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

Параметры:
e - добавляемый элемент
Исключения:
IllegalStateException - если элемент не может быть добавлен в данный момент из-за ограничений по емкости
ClassCastException - если класс указанного элемента препятствует его добавлению в эту очередь с двойной очередью
NullPointerException - если указанный элемент равен null, а эта очередь с двойной очередью не допускает null-элементов
IllegalArgumentException - если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь с двойной очередью

addLast

void addLast(E e)

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

Этот метод эквивалентен методу add(E).

Параметры:
e - добавляемый элемент
Исключения:
IllegalStateException - если элемент не может быть добавлен в данный момент из-за ограничений по емкости
ClassCastException - если класс указанного элемента препятствует его добавлению в эту очередь с двойной очередью
NullPointerException - если указанный элемент равен null, а эта очередь с двойной очередью не допускает null-элементов
IllegalArgumentException - если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь с двойной очередью

offerFirst

boolean offerFirst(E e)

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

Параметры:
e - добавляемый элемент
Возвращает:
true , если элемент был добавлен в эту очередь с двойной очередью, иначе false
Исключения:
ClassCastException - если класс указанного элемента препятствует его добавлению в эту очередь с двойной очередью
NullPointerException - если указанный элемент равен null, а эта очередь с двойной очередью не допускает null-элементов
IllegalArgumentException - если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь с двойной очередью

offerLast

boolean offerLast(E e)

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

Параметры:
e - добавляемый элемент
Возвращает:
true , если элемент был добавлен в эту очередь с двойной очередью, иначе false
Исключения:
ClassCastException - если класс указанного элемента препятствует его добавлению в эту очередь с двойной очередью
NullPointerException - если указанный элемент равен null, а эта очередь с двойной очередью не допускает null-элементов
IllegalArgumentException - если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь с двойной очередью

removeFirst

E removeFirst()

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

Возвращает:
голова этой очереди с двойной очередью
Исключения:
NoSuchElementException - если эта очередь с двойной очередью пуста

removeLast

E removeLast()

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

Возвращает:
хвост этой очереди с двойной очередью
Исключения:
NoSuchElementException - если эта очередь с двойной очередью пуста

pollFirst

E pollFirst()

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

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

pollLast

E pollLast()

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

Возвращает:
хвост этой очереди с двойной очередью, или null , если эта очередь с двойной очередью пуста

getFirst

E getFirst()

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

Возвращает:
голова этой очереди с двойной очередью
Исключения:
NoSuchElementException - если эта очередь с двойной очередью пуста

getLast

E getLast()

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

Возвращает:
хвост этой очереди с двойной очередью
Исключения:
NoSuchElementException - если эта очередь с двойной очередью пуста

peekFirst

E peekFirst()

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

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

peekLast

E peekLast()

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

Возвращает:
хвост этой очереди с двойной очередью, или null , если эта очередь с двойной очередью пуста

removeFirstOccurrence

boolean removeFirstOccurrence(Object o)

Удаляет первое вхождение указанного элемента из этой очереди с двойной очередью. Если очередь с двойной очередью не содержит элемента, она остается без изменений. Более формально, удаляет первый элемент e такой, что Objects.equals(o, e) (если такой элемент существует). Возвращает true , если эта очередь с двойной очередью содержала указанный элемент (или, что эквивалентно, если эта очередь с двойной очередью изменилась в результате вызова).

Параметры:
o - элемент, который нужно удалить из этой очереди с двойной очередью, если он присутствует
Возвращает:
true , если элемент был удален в результате этого вызова
Исключения:
ClassCastException - если класс указанного элемента несовместим с этой очередью с двойной очередью (необязательно)
NullPointerException - если указанный элемент равен null, а эта очередь с двойной очередью не допускает null-элементов (необязательно)

removeLastOccurrence

boolean removeLastOccurrence(Object o)

Удаляет последнее вхождение указанного элемента из этой очереди с двойной очередью. Если очередь с двойной очередью не содержит элемента, она остается без изменений. Более формально, удаляет последний элемент e такой, что Objects.equals(o, e) (если такой элемент существует). Возвращает true , если эта очередь с двойной очередью содержала указанный элемент (или, что эквивалентно, если эта очередь с двойной очередью изменилась в результате вызова).

Параметры:
o - элемент, который нужно удалить из этой очереди с двойной очередью, если он присутствует
Возвращает:
true , если элемент был удален в результате этого вызова
Исключения:
ClassCastException - если класс указанного элемента несовместим с этой очередью с двойной очередью (необязательно)
NullPointerException - если указанный элемент равен null, а эта очередь с двойной очередью не допускает null-элементов (необязательно)

add

boolean add(E e)

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

Этот метод эквивалентен методу addLast(E).

Определено в:
add в интерфейсе Collection<E>
Определено в:
add в интерфейсе Queue<E>
Параметры:
e - добавляемый элемент
Возвращает:
true (как указано в Collection.add(E))
Исключения:
IllegalStateException - если элемент не может быть добавлен в данный момент из-за ограничений по емкости
ClassCastException - если класс указанного элемента препятствует его добавлению в эту очередь с двойной очередью
NullPointerException - если указанный элемент равен null, а эта очередь с двойной очередью не допускает null-элементов
IllegalArgumentException - если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь с двойной очередью

offer

boolean offer(E e)

Вставляет указанный элемент в очередь, представленную этой очередью с двойной очередью (т.е. в конец этой очереди с двойной очередью), если это можно сделать немедленно без нарушения ограничений по емкости, возвращая true при успехе и false , если в данный момент нет места. При использовании очереди с двойной очередью с ограниченной емкостью, этот метод, как правило, предпочтительнее метода add(E), который может не вставить элемент, только сбросив исключение.

Этот метод эквивалентен методу offerLast(E).

Указано:
offer в интерфейсе Queue<E>
Параметры:
e - добавляемый элемент
Возвращает:
true если элемент был добавлен в эту очередь с двойным концом, иначе false
Исключения:
ClassCastException - если класс указанного элемента препятствует его добавлению в эту очередь с двойным концом
NullPointerException - если указанный элемент равен null, а эта очередь с двойным концом не допускает null-элементов
IllegalArgumentException - если какое-либо свойство указанного элемента препятствует его добавлению в эту очередь с двойным концом

remove

E remove()

Извлекает и удаляет голову очереди, представленной этой очередью с двойным концом (иначе говоря, первый элемент этой очереди с двойным концом). Этот метод отличается от poll() только тем, что выбрасывает исключение, если эта очередь с двойным концом пуста.

Этот метод эквивалентен removeFirst().

Указано:
remove в интерфейсе Queue<E>
Возвращает:
голова очереди, представленная этой очередью с двойным концом
Исключения:
NoSuchElementException - если эта очередь с двойным концом пуста

poll

E poll()

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

Этот метод эквивалентен pollFirst().

Указано:
poll в интерфейсе Queue<E>
Возвращает:
первый элемент этой очереди с двойным концом или null , если эта очередь с двойным концом пуста

element

E element()

Извлекает, но не удаляет, голову очереди, представленной этой очередью с двойным концом (иначе говоря, первый элемент этой очереди с двойным концом). Этот метод отличается от peek только тем, что выбрасывает исключение, если эта очередь с двойным концом пуста.

Этот метод эквивалентен getFirst().

Указано:
element в интерфейсе Queue<E>
Возвращает:
голова очереди, представленная этой очередью с двойным концом
Исключения:
NoSuchElementException - если эта очередь с двойным концом пуста

peek

E peek()

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

Этот метод эквивалентен peekFirst().

Указано:
peek в интерфейсе Queue<E>
Возвращает:
голова очереди, представленная этой очередью с двойным концом, или null , если эта очередь с двойным концом пуста

addAll

boolean addAll(Collection<? extends E> c)

Добавляет все элементы в указанной коллекции в конец этой очереди с двойным концом, как если бы вы вызывали addLast(E) для каждого из них в порядке, в котором они возвращаются итератором коллекции.

При использовании очереди с двойным концом с ограниченной емкостью, обычно предпочтительнее вызывать offer для каждого элемента по отдельности.

Исключение, возникшее при попытке добавить элемент, может привести к тому, что только некоторые элементы будут успешно добавлены, когда будет брошено соответствующее исключение.

Указано:
addAll в интерфейсе Collection<E>
Параметры:
c - элементы, которые необходимо вставить в эту очередь с двойным концом
Возвращает:
true если эта очередь с двойным концом изменилась в результате вызова
Исключения:
IllegalStateException - если не все элементы могут быть добавлены в данный момент из-за ограничений на вставку
ClassCastException - если класс элемента указанной коллекции препятствует его добавлению в эту очередь с двойным концом
NullPointerException - если указанная коллекция содержит null-элемент, а эта очередь с двойным концом не допускает null-элементов, или если указанная коллекция равна null
IllegalArgumentException - если какое-либо свойство элемента указанной коллекции препятствует его добавлению в эту очередь с двойным концом
См. также:
Collection.add(Object)

push

void push(E e)

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

Этот метод эквивалентен addFirst(E).

Параметры:
e - добавляемый элемент
Исключения:
IllegalStateException - если элемент не может быть добавлен в данный момент из-за ограничений на емкость
ClassCastException - если класс указанного элемента препятствует его добавлению в эту очередь с двойным концом
NullPointerException - если указанный элемент равен null, а эта очередь с двойным концом не допускает null-элементов
IllegalArgumentException - если какое-либо свойство указанного элемента препятствует его добавлению в эту очередь с двойным концом

pop

E pop()

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

Этот метод эквивалентен removeFirst().

Возвращает:
элемент в начале этой очереди с двойным концом (который является вершиной стека, представленного этой очередью с двойным концом)
Исключения:
NoSuchElementException - если эта очередь с двойным концом пуста

remove

boolean remove(Object o)

Удаляет первое вхождение указанного элемента из этой очереди с двойным концом. Если очередь с двойным концом не содержит элемент, она остается неизменной. Более формально, удаляет первый элемент e такой, что Objects.equals(o, e) (если такой элемент существует). Возвращает true , если эта очередь с двойным концом содержала указанный элемент (или, что эквивалентно, если эта очередь с двойным концом изменилась в результате вызова).

Этот метод эквивалентен removeFirstOccurrence(Object).

Указано:
remove в интерфейсе Collection<E>
Параметры:
o - элемент, подлежащий удалению из этой очереди с двойным концом, если он присутствует
Возвращает:
true если элемент был удален в результате этого вызова
Исключения:
ClassCastException - если класс указанного элемента несовместим с этой очередью с двойным концом (необязательно)
NullPointerException - если указанный элемент равен null, а эта очередь с двойным концом не допускает null-элементов (необязательно)

contains

boolean contains(Object o)

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

Указано:
contains в интерфейсе Collection<E>
Параметры:
o - элемент, присутствие которого в этой очереди с двойным концом необходимо проверить
Возвращает:
true если эта очередь с двойным концом содержит указанный элемент
Исключения:
ClassCastException - если класс указанного элемента несовместим с этой очередью с двойным концом (необязательно)
NullPointerException - если указанный элемент равен null, а эта очередь с двойным концом не допускает null-элементов (необязательно)

size

int size()

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

Указано:
size в интерфейсе Collection<E>
Возвращает:
количество элементов в этой очереди с двойным концом

iterator

Iterator<E> iterator()

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

Указано:
iterator в интерфейсе Collection<E>
Указано:
iterator в интерфейсе Iterable<E>
Возвращает:
итератор по элементам в этой очереди с двойным концом в правильной последовательности

descendingIterator

Iterator<E> descendingIterator()

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

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

© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Deque.html

Spec-Zone .ru
спецификации, руководства, описания, API