Интерфейс Deque<E>
- Type Parameters:
E- тип элементов, хранящихся в этом deque
- Все суперинтерфейсы:
-
Collection<E>,Iterable<E>,Queue<E>,SequencedCollection<E>
- Все известные подинтерфейсы:
BlockingDeque<E>
- Все известные реализующие классы:
-
ArrayDeque,ConcurrentLinkedDeque,LinkedBlockingDeque,LinkedList
public interface Deque<E> extends Queue<E>, SequencedCollection<E>
Deque не накладывают ограничений на количество элементов, но этот интерфейс поддерживает также ограниченные по емкости deque, а также те, у которых нет фиксированного размера. Этот интерфейс определяет методы доступа к элементам на обоих концах 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). Элементы добавляются в конец deque и удаляются с начала. Методы, унаследованные от интерфейса Queue, точно эквивалентны методам Deque, как указано в следующей таблице:
Метод Queue | Эквивалентный метод Deque |
|---|---|
add(e) | addLast(e) |
offer(e) | offerLast(e) |
remove() | removeFirst() |
poll() | pollFirst() |
element() | getFirst() |
peek() | peekFirst() |
Deque также может использоваться как LIFO (Last-In-First-Out) стек. Этот интерфейс следует использовать вместо устаревшего класса Stack. При использовании deque как стека элементы помещаются и извлекаются с начала deque. Методы стека эквивалентны методам Deque, как указано в таблице ниже:
| Метод стека | Эквивалентный метод Deque |
|---|---|
push(e) | addFirst(e) |
pop() | removeFirst() |
peek() | peekFirst() |
Обратите внимание, что метод peek работает одинаково хорошо, когда deque используется как очередь или стек; в обоих случаях элементы извлекаются с начала deque.
Этот интерфейс предоставляет два метода для удаления внутренних элементов, removeFirstOccurrence и removeLastOccurrence.
В отличие от интерфейса List, этот интерфейс не предоставляет поддержки индексированного доступа к элементам.
Хотя реализации Deque не обязаны запрещать вставку элементов null, они настоятельно рекомендуются. Пользователям любых реализаций Deque, которые позволяют вставлять элементы null, настоятельно рекомендуется не использовать возможность вставки null. Это связано с тем, что null используется в качестве специального возвращаемого значения различными методами для указания того, что deque пуст.
Реализации Deque обычно не определяют версий методов equals и hashCode, основанных на элементах, а вместо этого наследуют версию, основанную на идентификаторе, от класса Object.
Этот интерфейс является частью Java Collections Framework.
- Since:
- 1.6
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в очередь, представленную этим деком (другими словами, в конец этого дека), если это возможно сделать немедленно без нарушения ограничений по емкости, возвращает true при успехе и выбрасывает IllegalStateException, если в настоящее время нет места. |
boolean |
addAll |
Добавляет все элементы из указанного набора в конец этого дека, как если бы вызывали addLast(E) для каждого из них в порядке, в котором они возвращаются итератором набора. |
void |
addFirst |
Вставляет указанный элемент в начало этого дека, если это возможно сделать немедленно без нарушения ограничений по емкости, выбрасывает IllegalStateException, если в настоящее время нет места. |
void |
addLast |
Вставляет указанный элемент в конец этого дека, если это возможно сделать немедленно без нарушения ограничений по емкости, выбрасывает IllegalStateException, если в настоящее время нет места. |
boolean |
contains |
Возвращает true, если этот дек содержит указанный элемент. |
Iterator |
descendingIterator() |
Возвращает итератор по элементам этого дека в обратном порядке. |
E |
element() |
Получает, но не удаляет, голову очереди, представленной этим деком (другими словами, первый элемент этого дека). |
E |
getFirst() |
Получает, но не удаляет, первый элемент этого дека. |
E |
getLast() |
Получает, но не удаляет, последний элемент этого дека. |
Iterator |
iterator() |
Возвращает итератор по элементам этого дека в правильном порядке. |
boolean |
offer |
Вставляет указанный элемент в очередь, представленную этим деком (другими словами, в конец этого дека), если это возможно сделать немедленно без нарушения ограничений по емкости, возвращает true при успехе и false, если в настоящее время нет места. |
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 |
Удаляет первое вхождение указанного элемента из этого дека. |
E |
removeFirst() |
Получает и удаляет первый элемент этого дека. |
boolean |
removeFirstOccurrence |
Удаляет первое вхождение указанного элемента из этого дека. |
E |
removeLast() |
Получает и удаляет последний элемент этого дека. |
boolean |
removeLastOccurrence |
Удаляет последнее вхождение указанного элемента из этого дека. |
default Deque |
reversed() |
Возвращает представление этого набора в обратном порядке. |
int |
size() |
Возвращает количество элементов в этом деке. |
Методы, объявленные в интерфейсе java.util.Collection
clear, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray, toArray
Подробное описание методов
addFirst
void addFirst(E e)
IllegalStateException, если в данный момент места нет. При использовании дека с ограниченной емкостью, обычно предпочтительнее использовать метод offerFirst(E).- Указано в:
-
addFirstв интерфейсеSequencedCollection<E> - Параметры:
-
e- добавляемый элемент - Исключения:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот дек -
NullPointerException- если указанный элемент null, а этот дек не допускает null-элементов -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в этот дек
addLast
void addLast(E e)
IllegalStateException, если в данный момент места нет. При использовании дека с ограниченной емкостью, обычно предпочтительнее использовать метод offerLast(E). Этот метод эквивалентен методу add(E).
- Указано в:
-
addLastв интерфейсеSequencedCollection<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 только тем, что он бросает исключение, если этот дек пустой.- Указано в:
-
removeFirstв интерфейсеSequencedCollection<E> - Возвращает:
- голова этого дека
- Исключения:
-
NoSuchElementException- если этот дек пустой
removeLast
E removeLast()
pollLast только тем, что он бросает исключение, если этот дек пустой.- Указано в:
-
removeLastв интерфейсеSequencedCollection<E> - Возвращает:
- хвост этого дека
- Исключения:
-
NoSuchElementException- если этот дек пустой
pollFirst
E pollFirst()
null, если этот дек пустой.- Возвращает:
- голова этого дека или
null, если этот дек пустой
pollLast
E pollLast()
null, если этот дек пустой.- Возвращает:
- хвост этого дека или
null, если этот дек пустой
getFirst
E getFirst()
peekFirst только тем, что он бросает исключение, если этот дек пустой.- Указано в:
-
getFirstв интерфейсеSequencedCollection<E> - Возвращает:
- голова этого дека
- Исключения:
-
NoSuchElementException- если этот дек пустой
getLast
E getLast()
peekLast только тем, что он бросает исключение, если этот дек пустой.- Указано в:
-
getLastв интерфейсеSequencedCollection<E> - Возвращает:
- хвост этого дека
- Исключения:
-
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).
- Specified by:
-
addв интерфейсеCollection<E> - Specified by:
-
addв интерфейсеQueue<E> - Parameters:
-
e- элемент для добавления - Returns:
-
true(как указано вCollection.add(E)) - Throws:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот дек -
NullPointerException- если указанный элемент имеет значение null, а этот дек не допускает null-элементов -
IllegalArgumentException- если какие-либо свойства указанного элемента препятствуют его добавлению в этот дек
offer
boolean offer(E e)
true при успехе и false, если в настоящее время доступно нет места. При использовании дека с ограниченной емкостью, этот метод обычно предпочтительнее метода add(E), который может не вставить элемент, только сбросив исключение. Этот метод эквивалентен offerLast(E).
- Specified by:
-
offerв интерфейсеQueue<E> - Parameters:
-
e- элемент для добавления - Returns:
-
true, если элемент был добавлен в этот дек, иначеfalse - Throws:
-
ClassCastException- если класс указанного элемента препятствует его добавлению в этот дек -
NullPointerException- если указанный элемент имеет значение null, а этот дек не допускает null-элементов -
IllegalArgumentException- если какие-либо свойства указанного элемента препятствуют его добавлению в этот дек
remove
E remove()
poll() только тем, что он выбрасывает исключение, если этот дек пуст. Этот метод эквивалентен removeFirst().
- Specified by:
-
removeв интерфейсеQueue<E> - Returns:
- голова очереди, представленной этим деком
- Throws:
-
NoSuchElementException- если этот дек пуст
poll
E poll()
null, если этот дек пуст. Этот метод эквивалентен pollFirst().
element
E element()
peek только тем, что он выбрасывает исключение, если этот дек пуст. Этот метод эквивалентен getFirst().
- Specified by:
-
elementв интерфейсеQueue<E> - Returns:
- голова очереди, представленной этим деком
- Throws:
-
NoSuchElementException- если этот дек пуст
peek
E peek()
null, если этот дек пуст. Этот метод эквивалентен peekFirst().
addAll
boolean addAll(Collection<? extends E> c)
addLast(E) для каждого из них в порядке, в котором они возвращаются итератором коллекции. При использовании дека с ограниченной емкостью, обычно предпочтительнее отдельно вызывать offer для каждого элемента.
Исключение, возникающее при попытке добавить элемент, может привести к тому, что только некоторые элементы будут успешно добавлены, когда будет выброшено связанное исключение.
- Specified by:
-
addAllв интерфейсеCollection<E> - Parameters:
-
c- элементы, которые нужно вставить в этот дек - Returns:
-
true, если этот дек изменился в результате вызова - Throws:
-
IllegalStateException- если не все элементы могут быть добавлены в данный момент из-за ограничений вставки -
ClassCastException- если класс элемента указанной коллекции препятствует его добавлению в этот дек -
NullPointerException- если указанная коллекция содержит null-элемент, а этот дек не допускает null-элементов, или если указанная коллекция имеет значение null -
IllegalArgumentException- если какие-либо свойства элемента указанной коллекции препятствуют его добавлению в этот дек - See Also:
push
void push(E e)
IllegalStateException, если в настоящее время доступно нет места. Этот метод эквивалентен addFirst(E).
- Parameters:
-
e- элемент для помещения в стек - Throws:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот дек -
NullPointerException- если указанный элемент имеет значение null, а этот дек не допускает null-элементов -
IllegalArgumentException- если какие-либо свойства указанного элемента препятствуют его добавлению в этот дек
pop
E pop()
Этот метод эквивалентен removeFirst().
- Returns:
- элемент в начале этого дека (который является вершиной стека, представленного этим деком)
- Throws:
-
NoSuchElementException- если этот дек пуст
remove
boolean remove(Object o)
e, такой что Objects.equals(o, e) (если такой элемент существует). Возвращает true, если этот дек содержал указанный элемент (или, что эквивалентно, если этот дек изменился в результате вызова). Этот метод эквивалентен removeFirstOccurrence(Object).
- Specified by:
-
removeв интерфейсеCollection<E> - Parameters:
-
o- элемент, который нужно удалить из этого дека, если он присутствует - Returns:
-
true, если элемент был удален в результате этого вызова - Throws:
-
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()
descendingIterator
Iterator<E> descendingIterator()
- Возвращает:
- итератор по элементам в этой очереди в обратном порядке
reversed
default Deque<E> reversed()
- Указано в:
-
reversedв интерфейсеSequencedCollection<E> - Требования к реализации:
- Реализация в этом интерфейсе возвращает представление Deque в обратном порядке. Метод
reversed()представления возвращает ссылку на эту Deque. Другие операции над представлением реализуются с помощью вызовов общедоступных методов этой Deque. Точное соотношение вызовов представления и вызовов этой Deque не определено. Однако операции, чувствительные к порядку, обычно ведут себя так, как если бы они делегировали соответствующему методу с обратной ориентацией. Например, вызовgetFirstна представлении может привести к вызовуgetLastна этой Deque. - Возвращает:
- представление этой коллекции в обратном порядке в качестве
Deque - С:
- 21
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/Deque.html