Класс ArrayDeque<E>
- Type Parameters:
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 с использованием массива переменного размера. Очереди с двумя концами типа ArrayDeque не имеют ограничений по емкости; они увеличиваются по мере необходимости для поддержки использования. Они не потокобезопасны; при отсутствии внешней синхронизации они не поддерживают одновременный доступ нескольких потоков. Элементы null запрещены. Этот класс, скорее всего, будет быстрее, чем Stack при использовании в качестве стека и быстрее, чем LinkedList при использовании в качестве очереди. Большинство ArrayDeque операций выполняются за амортизированное постоянное время. Исключение составляют remove, removeFirstOccurrence, removeLastOccurrence, contains, iterator.remove() и операции по обработке наборов, все из которых выполняются за линейное время.
Итераторы, возвращаемые методом iterator этого класса, являются быстродействующими: Если очередь с двумя концами изменяется в любой момент после создания итератора, любым способом, кроме собственного метода итератора remove, итератор, как правило, бросит исключение ConcurrentModificationException. Таким образом, при одновременном изменении итератор быстро и четко завершает работу, вместо того чтобы рисковать произвольным, непредсказуемым поведением в неопределенный момент времени в будущем.
Обратите внимание, что поведение быстродействующего итератора не гарантируется, так как, вообще говоря, невозможно дать какие-либо жесткие гарантии в случае несинхронизированного одновременного изменения. Быстродействующие итераторы бросают ConcurrentModificationException на основе наилучшего усилия. Поэтому неправильно писать программу, которая полагалась бы на это исключение для правильности: поведение быстродействующих итераторов следует использовать только для обнаружения ошибок.
Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection, SequencedCollection и Iterator.
Этот класс является членом Java Collections Framework.
- Since:
- 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 |
Возвращает массив, содержащий все элементы в этом деке в правильном порядке (с первого по последний элемент); тип возвращаемого массива — тип указанного массива. |
Методы, объявленные в классе java.util.AbstractCollection
containsAll, toString
Методы, объявленные в классе java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.util.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 boolean removeFirstOccurrence(Object o)
e такой, что o.equals(e) (если такой элемент существует). Возвращает true, если этот дек содержал указанный элемент (или, эквивалентно, если этот дек изменился в результате вызова).- Указано в:
-
removeFirstOccurrenceв интерфейсеDeque<E> - Параметры:
-
o- элемент, который нужно удалить из этого дека, если он присутствует - Возвращает:
-
true, если дек содержал указанный элемент
удалитьПоследнееВстретившееся
public boolean removeLastOccurrence(Object o)
e такой, что o.equals(e) (если такой элемент существует). Возвращает true, если этот дек содержал указанный элемент (или, эквивалентно, если этот дек изменился в результате вызова).- Указано в:
-
removeLastOccurrenceв интерфейсеDeque<E> - Параметры:
-
o- элемент, который нужно удалить из этого дека, если он присутствует - Возвращает:
-
true, если дек содержал указанный элемент
добавить
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
предложить
public boolean offer(E e)
Этот метод эквивалентен offerLast(E).
- Указано в:
-
offerв интерфейсеDeque<E> - Указано в:
-
offerв интерфейсеQueue<E> - Параметры:
-
e- добавляемый элемент - Возвращает:
-
true(как указано вQueue.offer(E)) - Издаёт:
-
NullPointerException- если указанный элемент равен null
удалить
public E remove()
poll() только тем, что он выбрасывает исключение, если этот дек пустой. Этот метод эквивалентен removeFirst().
получитьИУдалить
public E poll()
null, если этот дек пустой. Этот метод эквивалентен pollFirst().
элемент
public E element()
peek только тем, что он выбрасывает исключение, если этот дек пустой. Этот метод эквивалентен getFirst().
получить
public E peek()
null, если этот дек пустой. Этот метод эквивалентен peekFirst().
поместить
public void push(E e)
Этот метод эквивалентен addFirst(E).
- Указано в:
-
pushв интерфейсеDeque<E> - Параметры:
-
e- помещаемый элемент - Издаёт:
-
NullPointerException- если указанный элемент равен null
извлечь
public E pop()
Этот метод эквивалентен removeFirst().
- Указано в:
-
popв интерфейсеDeque<E> - Возвращает:
- элемент в начале этого дека (который является вершиной стека, представленного этим дека)
- Издаёт:
-
NoSuchElementException- если этот дек пустой
размер
пустой
public boolean isEmpty()
true, если этот дек не содержит элементов.- Указано в:
-
isEmptyв интерфейсеCollection<E> - Переопределяет:
-
isEmptyв классеAbstractCollection<E> - Возвращает:
-
true, если этот дек не содержит элементов
итератор
обратныйИтератор
public Iterator<E> descendingIterator()
Deque- Указано в:
-
descendingIteratorв интерфейсеDeque<E> - Возвращает:
- итератор по элементам этого дека в обратном порядке
spliterator
public Spliterator<E> spliterator()
Spliterator по элементам в этом очереди с двумя концами. Spliterator сообщает о Spliterator.SIZED, Spliterator.SUBSIZED, Spliterator.ORDERED и Spliterator.NONNULL. При переопределении реализации следует документировать отчёт о дополнительных значениях характеристик.
- Specified by:
-
spliteratorв интерфейсеCollection<E> - Specified by:
-
spliteratorв интерфейсеIterable<E> - Returns:
Spliteratorпо элементам в этой очереди с двумя концами- Since:
- 1.8
forEach
public void forEach(Consumer<? super E> action)
IterableIterable, пока все элементы не будут обработаны или действие не выбросит исключение. Действия выполняются в порядке итерации, если этот порядок указан. Исключение, выброшенное действием, передаётся вызывающему методу. Поведение этого метода не определено, если действие производит побочные эффекты, которые изменяют основной источник элементов, если только переопределяемый класс не указал политику одновременного изменения.
- Specified by:
-
forEachв интерфейсеIterable<E> - Parameters:
-
action- действие, которое должно выполняться для каждого элемента - Throws:
-
NullPointerException- если заданное действие равно null
removeIf
public boolean removeIf(Predicate<? super E> filter)
Collection- Specified by:
-
removeIfв интерфейсеCollection<E> - Parameters:
-
filter- предикат, возвращающийtrueдля элементов, которые нужно удалить - Returns:
-
true, если были удалены какие-либо элементы - Throws:
-
NullPointerException- если указанный фильтр равен null
removeAll
public boolean removeAll(Collection<?> c)
AbstractCollection- Specified by:
-
removeAllв интерфейсеCollection<E> - Overrides:
-
removeAllв классеAbstractCollection<E> - Parameters:
-
c- набор, содержащий элементы, которые нужно удалить из этого набора - Returns:
-
true, если этот набор изменился в результате вызова - Throws:
-
NullPointerException- если этот набор содержит один или несколько null-элементов, а указанный набор не поддерживает null-элементы (необязательное) или если указанный набор равен null - See Also:
retainAll
public boolean retainAll(Collection<?> c)
AbstractCollection- Specified by:
-
retainAllв интерфейсеCollection<E> - Overrides:
-
retainAllв классеAbstractCollection<E> - Parameters:
-
c- набор, содержащий элементы, которые нужно сохранить в этом наборе - Returns:
-
true, если этот набор изменился в результате вызова - Throws:
-
NullPointerException- если этот набор содержит один или несколько null-элементов, а указанный набор не допускает null-элементы (необязательное) или если указанный набор равен null - See Also:
contains
public boolean contains(Object o)
true, если этот очередь с двумя концами содержит указанный элемент. Более формально, возвращает true тогда и только тогда, когда этот очередь с двумя концами содержит по крайней мере один элемент e, такой что o.equals(e).- Specified by:
-
containsв интерфейсеCollection<E> - Specified by:
-
containsв интерфейсеDeque<E> - Overrides:
-
containsв классеAbstractCollection<E> - Parameters:
-
o- объект, который нужно проверить на принадлежность к этому очереди с двумя концами - Returns:
-
true, если этот очередь с двумя концами содержит указанный элемент
remove
public boolean remove(Object o)
e, такой что o.equals(e) (если такой элемент существует). Возвращает true, если этот очередь с двумя концами содержал указанный элемент (или, что эквивалентно, если этот очередь с двумя концами изменился в результате вызова). Этот метод эквивалентен removeFirstOccurrence(Object).
- Specified by:
-
removeв интерфейсеCollection<E> - Specified by:
-
removeв интерфейсеDeque<E> - Overrides:
-
removeв классеAbstractCollection<E> - Parameters:
-
o- элемент, который нужно удалить из этого очереди с двумя концами, если он есть - Returns:
-
true, если этот очередь с двумя концами содержал указанный элемент
clear
public void clear()
- Specified by:
-
clearв интерфейсеCollection<E> - Overrides:
-
clearв классеAbstractCollection<E>
toArray
public Object[] toArray()
Возвращаемый массив будет «безопасным» в том смысле, что к нему не сохраняются ссылки из этого очереди с двумя концами. (Другими словами, этот метод должен выделить новый массив). Таким образом, вызывающий метод свободен изменять возвращаемый массив.
Этот метод служит мостом между основанными на массивах и основанными на коллекциях API.
- Specified by:
-
toArrayв интерфейсеCollection<E> - Overrides:
-
toArrayв классеAbstractCollection<E> - Returns:
- массив, содержащий все элементы этого очереди с двумя концами
toArray
public <T> T[] toArray(T[] a)
Если эта очередь помещается в указанный массив с избыточным местом (т. е. массив имеет больше элементов, чем эта очередь), элемент в массиве сразу после конца очереди устанавливается в null.
Как и метод toArray(), этот метод служит мостом между основанными на массиве и основанными на коллекциях 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/ArrayDeque.html