Класс 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.
- Начиная с:
- 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
Методы, объявленные в классе Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе Collection
containsAll, equals, hashCode, parallelStream, stream, toArray
Подробное описание конструкторов
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
public E peekLast()
Dequenull, если очередь пуста.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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayDeque.html