Класс ArrayDeque<E>
- Параметры типа:
E— тип элементов, хранящихся в этой двусторонней очереди
- Все реализуемые интерфейсы:
Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, Queue<E>, SequencedCollection<E>
public class ArrayDeque<E> extends AbstractCollection<E> implements Deque<E>, Cloneable, Serializable
Deque на основе массива с динамически изменяемым размером. Двусторонние очереди на основе массива не имеют ограничений по емкости; при необходимости они увеличиваются. Они не являются потокобезопасными; без внешней синхронизации они не поддерживают одновременный доступ из нескольких потоков. Элементы со значением null запрещены. Этот класс, вероятно, работает быстрее, чем Stack при использовании в качестве стека, и быстрее, чем LinkedList при использовании в качестве очереди. Большинство операций ArrayDeque выполняются за амортизированное постоянное время. Исключения составляют remove, removeFirstOccurrence, removeLastOccurrence, contains, iterator.remove() и пакетные операции: все они выполняются за линейное время.
Итераторы, возвращаемые методом iterator этого класса, являются быстроотказывающими: если после создания итератора двусторонняя очередь каким-либо образом изменяется, кроме как с помощью собственного метода remove итератора, итератор, как правило, выбрасывает исключение ConcurrentModificationException. Таким образом, при одновременном изменении итератор быстро и корректно отказывает, вместо того чтобы допустить произвольное, недетерминированное поведение в неопределенный момент в будущем.
Обратите внимание, что гарантировать быстроотказывающее поведение итератора нельзя, поскольку, вообще говоря, невозможно дать какие-либо строгие гарантии при несинхронизированном одновременном изменении. Быстроотказывающие итераторы выбрасывают ConcurrentModificationException по возможности. Поэтому было бы неправильно писать программу, корректность которой зависит от этого исключения: быстроотказывающее поведение итераторов следует использовать только для обнаружения ошибок.
Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection, SequencedCollection и Iterator.
Этот класс является частью Java Collections Framework.
- Начиная с:
- 1.6
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ArrayDeque() |
Создает пустую двустороннюю очередь на основе массива с начальной емкостью, достаточной для хранения 16 элементов. |
ArrayDeque |
Создает пустую двустороннюю очередь на основе массива с начальной емкостью, достаточной для хранения указанного числа элементов. |
ArrayDeque |
Создает двустороннюю очередь, содержащую элементы указанной коллекции в том порядке, в котором их возвращает итератор коллекции. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в конец этой двусторонней очереди. |
boolean |
addAll |
Добавляет все элементы указанной коллекции в конец этой двусторонней очереди, как если бы для каждого из них в порядке, в котором их возвращает итератор коллекции, был вызван метод addLast(E). |
void |
addFirst |
Вставляет указанный элемент в начало этой двусторонней очереди. |
void |
addLast |
Вставляет указанный элемент в конец этой двусторонней очереди. |
void |
clear() |
Удаляет все элементы из этой двусторонней очереди. |
ArrayDeque |
clone() |
Возвращает копию этой двусторонней очереди. |
boolean |
contains |
Возвращает true, если эта двусторонняя очередь содержит указанный элемент. |
Iterator |
descendingIterator() |
Возвращает итератор элементов этой двусторонней очереди в обратном последовательном порядке. |
E |
element() |
Извлекает, но не удаляет начало очереди, представленной этой двусторонней очередью. |
void |
forEach |
Выполняет указанное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не выбросит исключение. |
E |
getFirst() |
Извлекает, но не удаляет первый элемент этой двусторонней очереди. |
E |
getLast() |
Извлекает, но не удаляет последний элемент этой двусторонней очереди. |
boolean |
isEmpty() |
Возвращает true, если эта двусторонняя очередь не содержит элементов. |
Iterator |
iterator() |
Возвращает итератор элементов этой двусторонней очереди. |
boolean |
offer |
Вставляет указанный элемент в конец этой двусторонней очереди. |
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 |
Помещает элемент в стек, представленный этой двусторонней очередью. |
E |
remove() |
Извлекает и удаляет начало очереди, представленной этой двусторонней очередью. |
boolean |
remove |
Удаляет одно вхождение указанного элемента из этой двусторонней очереди. |
boolean |
removeAll |
Удаляет из этой коллекции все элементы, которые также содержатся в указанной коллекции (необязательная операция). |
E |
removeFirst() |
Извлекает и удаляет первый элемент этой двусторонней очереди. |
boolean |
removeFirstOccurrence |
Удаляет первое вхождение указанного элемента в этой двусторонней очереди (при обходе от начала к концу). |
boolean |
removeIf |
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату (необязательная операция). |
E |
removeLast() |
Извлекает и удаляет последний элемент этой двусторонней очереди. |
boolean |
removeLastOccurrence |
Удаляет последнее вхождение указанного элемента в этой двусторонней очереди (при обходе от начала к концу). |
boolean |
retainAll |
Оставляет в этой коллекции только элементы, содержащиеся в указанной коллекции (необязательная операция). |
int |
size() |
Возвращает число элементов в этой двусторонней очереди. |
Spliterator |
spliterator() |
Создает привязываемый с задержкой и быстроотказывающий Spliterator для элементов этой двусторонней очереди. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этой двусторонней очереди в правильном порядке (от первого элемента к последнему). |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой двусторонней очереди в правильном порядке (от первого элемента к последнему); тип времени выполнения возвращаемого массива совпадает с типом указанного массива. |
Методы, объявленные в классе AbstractCollection
containsAll, toString | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
containsAll |
Возвращает true, если эта коллекция содержит все элементы указанной коллекции. |
String |
toString() |
Возвращает строковое представление этой коллекции. |
Методы, объявленные в классе Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Указывает, является ли другой объект «равным» этому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и может быть удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает значение хеш-кода этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного периода реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного периода реального времени. |
Методы, объявленные в интерфейсе Collection
equals, hashCode, parallelStream, stream, toArray | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает указанный объект с этой коллекцией на равенство. |
int |
hashCode() |
Возвращает значение хеш-кода этой коллекции. |
default Stream |
parallelStream() |
Возвращает возможно параллельный Stream, источником которого является эта коллекция. |
default Stream |
stream() |
Возвращает последовательный Stream, источником которого является эта коллекция. |
default <T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой коллекции; для выделения возвращаемого массива используется предоставленная функция generator. |
Подробное описание конструкторов
ArrayDeque
public ArrayDeque()
ArrayDeque
public ArrayDeque(int numElements)
- Параметры:
-
numElements— нижняя граница начальной емкости деки
ArrayDeque
public ArrayDeque(Collection<? extends E> c)
- Параметры:
-
c— коллекция, элементы которой должны быть помещены в деку - Исключения:
-
NullPointerException— если указанная коллекция равна null
Подробное описание методов
addFirst
public void addFirst(E e)
- Определен в:
-
addFirstв интерфейсеDeque<E> - Определен в:
-
addFirstв интерфейсеSequencedCollection<E> - Параметры:
-
e— добавляемый элемент - Исключения:
-
NullPointerException— если указанный элемент равен null
addLast
public void addLast(E e)
Этот метод эквивалентен add(E).
- Определен в:
-
addLastв интерфейсеDeque<E> - Определен в:
-
addLastв интерфейсеSequencedCollection<E> - Параметры:
-
e— добавляемый элемент - Исключения:
-
NullPointerException— если указанный элемент равен null
addAll
public boolean addAll(Collection<? extends E> c)
addLast(E).- Определен в:
-
addAllв интерфейсеCollection<E> - Определен в:
-
addAllв интерфейсеDeque<E> - Переопределяет:
-
addAllв классеAbstractCollection<E> - Параметры:
-
c— элементы, которые нужно вставить в эту деку - Возвращает:
-
true, если эта дека изменилась в результате вызова - Исключения:
-
NullPointerException— если указанная коллекция или любой из ее элементов равны null - См. также:
offerFirst
public boolean offerFirst(E e)
- Определен в:
-
offerFirstв интерфейсеDeque<E> - Параметры:
-
e— добавляемый элемент - Возвращает:
-
true(как указано вDeque.offerFirst(E)) - Исключения:
-
NullPointerException— если указанный элемент равен null
offerLast
public boolean offerLast(E e)
- Определен в:
-
offerLastв интерфейсеDeque<E> - Параметры:
-
e— добавляемый элемент - Возвращает:
-
true(как указано вDeque.offerLast(E)) - Исключения:
-
NullPointerException— если указанный элемент равен null
removeFirst
public E removeFirst()
DequepollFirst только тем, что выбрасывает исключение, если дека пуста.- Определен в:
-
removeFirstв интерфейсеDeque<E> - Определен в:
-
removeFirstв интерфейсеSequencedCollection<E> - Возвращает:
- первый элемент этой деки
- Исключения:
-
NoSuchElementException— если дека пуста
removeLast
public E removeLast()
DequepollLast только тем, что выбрасывает исключение, если дека пуста.- Определен в:
-
removeLastв интерфейсеDeque<E> - Определен в:
-
removeLastв интерфейсеSequencedCollection<E> - Возвращает:
- последний элемент этой деки
- Исключения:
-
NoSuchElementException— если дека пуста
pollFirst
pollLast
getFirst
public E getFirst()
DequepeekFirst только тем, что выбрасывает исключение, если дека пуста.- Определен в:
-
getFirstв интерфейсеDeque<E> - Определен в:
-
getFirstв интерфейсеSequencedCollection<E> - Возвращает:
- первый элемент этой деки
- Исключения:
-
NoSuchElementException— если дека пуста
getLast
public E getLast()
DequepeekLast только тем, что выбрасывает исключение, если дека пуста.- Определен в:
-
getLastв интерфейсеDeque<E> - Определен в:
-
getLastв интерфейсеSequencedCollection<E> - Возвращает:
- последний элемент этой деки
- Исключения:
-
NoSuchElementException— если дека пуста
peekFirst
peekLast
removeFirstOccurrence
public boolean removeFirstOccurrence(Object o)
e, такой что o.equals(e) (если такой элемент существует). Возвращает true, если эта дека содержала указанный элемент (или, что эквивалентно, если дека изменилась в результате вызова).- Определен в:
-
removeFirstOccurrenceв интерфейсеDeque<E> - Параметры:
-
o— элемент, который нужно удалить из этой деки, если он присутствует - Возвращает:
-
true, если дека содержала указанный элемент
removeLastOccurrence
public boolean removeLastOccurrence(Object o)
e, такой что o.equals(e) (если такой элемент существует). Возвращает true, если эта дека содержала указанный элемент (или, что эквивалентно, если дека изменилась в результате вызова).- Определен в:
-
removeLastOccurrenceв интерфейсеDeque<E> - Параметры:
-
o— элемент, который нужно удалить из этой деки, если он присутствует - Возвращает:
-
true, если дека содержала указанный элемент
add
public boolean add(E e)
Этот метод эквивалентен addLast(E).
- Определен в:
-
addв интерфейсеCollection<E> - Определен в:
-
addв интерфейсеDeque<E> - Определен в:
-
addв интерфейсеQueue<E> - Переопределяет:
-
addв классеAbstractCollection<E> - Параметры:
-
e— добавляемый элемент - Возвращает:
-
true(как указано вCollection.add(E)) - Исключения:
-
NullPointerException— если указанный элемент равен null
offer
public boolean offer(E e)
Этот метод эквивалентен offerLast(E).
- Определен в:
-
offerв интерфейсеDeque<E> - Определен в:
-
offerв интерфейсеQueue<E> - Параметры:
-
e— добавляемый элемент - Возвращает:
-
true(как указано вQueue.offer(E)) - Исключения:
-
NullPointerException— если указанный элемент равен null
remove
public E remove()
poll() только тем, что выбрасывает исключение, если дека пуста. Этот метод эквивалентен removeFirst().
poll
public E poll()
null, если дека пуста. Этот метод эквивалентен pollFirst().
element
public E element()
peek только тем, что выбрасывает исключение, если дека пуста. Этот метод эквивалентен getFirst().
peek
public E peek()
null, если дека пуста. Этот метод эквивалентен peekFirst().
push
public void push(E e)
Этот метод эквивалентен addFirst(E).
- Определен в:
-
pushв интерфейсеDeque<E> - Параметры:
-
e— помещаемый в стек элемент - Исключения:
-
NullPointerException— если указанный элемент равен null
pop
public E pop()
Этот метод эквивалентен removeFirst().
- Определен в:
-
popв интерфейсеDeque<E> - Возвращает:
- элемент в начале этой деки (который является вершиной стека, представленного этой декой)
- Исключения:
-
NoSuchElementException— если дека пуста
size
isEmpty
public boolean isEmpty()
true, если эта дека не содержит элементов.- Определен в:
-
isEmptyв интерфейсеCollection<E> - Переопределяет:
-
isEmptyв классеAbstractCollection<E> - Возвращает:
-
true, если эта дека не содержит элементов
iterator
public Iterator<E> iterator()
descendingIterator
public Iterator<E> descendingIterator()
Deque- Определен в:
-
descendingIteratorв интерфейсеDeque<E> - Возвращает:
- итератор по элементам этой деки в обратном порядке
spliterator
public Spliterator<E> spliterator()
Spliterator для элементов этой деки. Объект Spliterator сообщает о характеристиках Spliterator.SIZED, Spliterator.SUBSIZED, Spliterator.ORDERED и Spliterator.NONNULL. Переопределяющие реализации должны документировать наличие дополнительных характеристик.
- Определен в:
-
spliteratorв интерфейсеCollection<E> - Определен в:
-
spliteratorв интерфейсеIterable<E> - Возвращает:
Spliteratorдля элементов этой деки- Начиная с:
- 1.8
forEach
public void forEach(Consumer<? super E> action)
IterableIterable, пока не будут обработаны все элементы или действие не выбросит исключение. Действия выполняются в порядке итерации, если такой порядок задан. Исключения, выброшенные действием, передаются вызывающему коду. Поведение этого метода не определено, если действие выполняет побочные эффекты, изменяющие исходную коллекцию элементов, за исключением случаев, когда переопределяющий класс задает политику конкурентного изменения.
- Определен в:
-
forEachв интерфейсеIterable<E> - Параметры:
-
action— действие, выполняемое для каждого элемента - Исключения:
-
NullPointerException— если указанное действие равно null
removeIf
public boolean removeIf(Predicate<? super E> filter)
Collection- Определен в:
-
removeIfв интерфейсеCollection<E> - Параметры:
-
filter— предикат, возвращающийtrueдля элементов, которые нужно удалить - Возвращает:
-
true, если были удалены какие-либо элементы - Исключения:
-
NullPointerException— если указанный фильтр равен null
removeAll
public boolean removeAll(Collection<?> c)
AbstractCollection- Определен в:
-
removeAllв интерфейсеCollection<E> - Переопределяет:
-
removeAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые нужно удалить из этой коллекции - Возвращает:
-
true, если эта коллекция изменилась в результате вызова - Исключения:
-
NullPointerException— если эта коллекция содержит один или несколько элементов null, а указанная коллекция не поддерживает элементы null (необязательно), или если указанная коллекция равна null - См. также:
retainAll
public boolean retainAll(Collection<?> c)
AbstractCollection- Определен в:
-
retainAllв интерфейсеCollection<E> - Переопределяет:
-
retainAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые нужно оставить в этой коллекции - Возвращает:
-
true, если эта коллекция изменилась в результате вызова - Исключения:
-
NullPointerException— если эта коллекция содержит один или несколько элементов null, а указанная коллекция не допускает элементы null (необязательно), или если указанная коллекция равна null - См. также:
contains
public boolean contains(Object o)
true, если эта дека содержит указанный элемент. Более формально, возвращает true тогда и только тогда, когда эта дека содержит хотя бы один элемент e, такой что o.equals(e).- Определен в:
-
containsв интерфейсеCollection<E> - Определен в:
-
containsв интерфейсеDeque<E> - Переопределяет:
-
containsв классеAbstractCollection<E> - Параметры:
-
o— объект, наличие которого в этой деке проверяется - Возвращает:
-
true, если эта дека содержит указанный элемент
remove
public boolean remove(Object o)
e, такой что o.equals(e) (если такой элемент существует). Возвращает true, если эта дека содержала указанный элемент (или, что эквивалентно, если дека изменилась в результате вызова). Этот метод эквивалентен removeFirstOccurrence(Object).
- Определен в:
-
removeв интерфейсеCollection<E> - Определен в:
-
removeв интерфейсеDeque<E> - Переопределяет:
-
removeв классеAbstractCollection<E> - Параметры:
-
o— элемент, который нужно удалить из этой деки, если он присутствует - Возвращает:
-
true, если эта дека содержала указанный элемент
clear
public void clear()
- Определен в:
-
clearв интерфейсеCollection<E> - Переопределяет:
-
clearв классеAbstractCollection<E>
toArray
public Object[] toArray()
Возвращаемый массив будет «безопасным»: эта двусторонняя очередь не хранит на него ссылок. (Иными словами, этот метод должен выделить новый массив.) Поэтому вызывающий код может свободно изменять возвращённый массив.
Этот метод служит связующим звеном между API на основе массивов и API на основе коллекций.
- Определён в:
-
toArrayв интерфейсеCollection<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Возвращает:
- массив, содержащий все элементы этой двусторонней очереди
toArray
public <T> T[] toArray(T[] a)
Если двусторонняя очередь помещается в указанный массив с запасом места (то есть элементов в массиве больше, чем в этой двусторонней очереди), элемент массива, расположенный непосредственно после конца двусторонней очереди, устанавливается в null.
Как и метод toArray(), этот метод служит связующим звеном между API на основе массивов и 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
clone
© 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.