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