Класс ArrayDeque<E>

Type Parameters:
E - тип элементов, хранящихся в этом очереди с двусторонним обходом
Все реализованные интерфейсы:
Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, Queue<E>
public class ArrayDeque<E>
extends AbstractCollection<E>
implements Deque<E>, Cloneable, Serializable

Реализация очереди с двусторонним обходом на основе массива с изменяемым размером. Очереди с двусторонним обходом на основе массива не имеют ограничений по вместимости; они увеличиваются по мере необходимости для поддержки использования. Они не потокобезопасны; при отсутствии внешней синхронизации они не поддерживают одновременный доступ нескольких потоков. Нулевые элементы запрещены. Этот класс, скорее всего, будет быстрее, чем Stack при использовании в качестве стека и быстрее, чем LinkedList при использовании в качестве очереди.

Большинство ArrayDeque операций выполняются за амортизированное постоянное время. К исключениям относятся remove, removeFirstOccurrence, removeLastOccurrence, contains, iterator.remove() и операции с блоками, все из которых выполняются за линейное время.

Итераторы, возвращаемые методом iterator этого класса, являются быстропроверяемыми: если очередь с двусторонним обходом изменяется после создания итератора любым способом, кроме способа, используемого собственным методом итератора remove, итератор, как правило, бросает исключение ConcurrentModificationException. Таким образом, при одновременном изменении итератор быстро и чисто завершает работу, а не рискует произвольным, непредсказуемым поведением в неопределенное время в будущем.

Обратите внимание, что поведение быстропроверяющего итератора не гарантируется, так как в целом невозможно дать какие-либо гарантии при одновременном изменении без синхронизации. Быстропроверяющие итераторы бросают ConcurrentModificationException в соответствии с возможностями. Поэтому неправильно писать программу, которая полагается на это исключение для своей корректности: поведение быстропроверяющих итераторов следует использовать только для обнаружения ошибок.

Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection и Iterator.

Этот класс является членом Java Collections Framework.

Since:
1.6
См. также:
Сериализованная форма

Конструкторы

Конструктор Описание
ArrayDeque()

Создает пустую очередь с двусторонним обходом с начальной емкостью, достаточной для хранения 16 элементов.

ArrayDeque​(int numElements)

Создает пустую очередь с двусторонним обходом с начальной емкостью, достаточной для хранения указанного количества элементов.

ArrayDeque​(Collection<? extends E> c)

Создает очередь с двусторонним обходом, содержащую элементы указанной коллекции в порядке, в котором они возвращаются итератором коллекции.

Методы

Модификатор и тип Метод Описание
boolean add​(E e)

Вставляет указанный элемент в конец этой очереди с двусторонним обходом.

boolean addAll​(Collection<? extends E> c)

Добавляет все элементы в указанной коллекции в конец этой очереди с двусторонним обходом, как если бы вызывался addLast(E) для каждого из них в порядке, в котором они возвращаются итератором коллекции.

void addFirst​(E e)

Вставляет указанный элемент в начало этой очереди с двусторонним обходом.

void addLast​(E e)

Вставляет указанный элемент в конец этой очереди с двусторонним обходом.

void clear()

Удаляет все элементы из этой очереди с двусторонним обходом.

ArrayDeque<E> clone()

Возвращает копию этой очереди с двусторонним обходом.

boolean contains​(Object o)

Возвращает true, если эта очередь с двусторонним обходом содержит указанный элемент.

E element()

Извлекает, но не удаляет, голову очереди, представленной этой очередью с двусторонним обходом.

void forEach​(Consumer<? super E> action)

Выполняет заданное действие для каждого элемента Iterable до тех пор, пока все элементы не будут обработаны или действие не выбросит исключение.

E getFirst()

Извлекает, но не удаляет, первый элемент этой очереди с двусторонним обходом.

E getLast()

Извлекает, но не удаляет, последний элемент этой очереди с двусторонним обходом.

boolean isEmpty()

Возвращает true, если эта очередь с двусторонним обходом не содержит элементов.

Iterator<E> iterator()

Возвращает итератор по элементам этой очереди с двусторонним обходом.

boolean offer​(E e)

Вставляет указанный элемент в конец этой очереди с двусторонним обходом.

boolean offerFirst​(E e)

Вставляет указанный элемент в начало этой очереди с двусторонним обходом.

boolean offerLast​(E e)

Вставляет указанный элемент в конец этой очереди с двусторонним обходом.

E peek()

Извлекает, но не удаляет, голову очереди, представленной этой очередью с двусторонним обходом, или возвращает null, если эта очередь с двусторонним обходом пуста.

E poll()

Извлекает и удаляет голову очереди, представленной этой очередью с двусторонним обходом (другими словами, первый элемент этой очереди с двусторонним обходом), или возвращает null, если эта очередь с двусторонним обходом пуста.

E pop()

Извлекает элемент из стека, представленного этой очередью с двусторонним обходом.

void push​(E e)

Добавляет элемент в стек, представленный этой очередью с двусторонним обходом.

E remove()

Извлекает и удаляет голову очереди, представленной этой очередью с двусторонним обходом.

boolean remove​(Object o)

Удаляет единственный экземпляр указанного элемента из этой очереди с двусторонним обходом.

boolean removeAll​(Collection<?> c)

Удаляет все элементы этой коллекции, которые также содержатся в указанной коллекции (необязательная операция).

E removeFirst()

Извлекает и удаляет первый элемент этой очереди с двусторонним обходом.

boolean removeFirstOccurrence​(Object o)

Удаляет первое вхождение указанного элемента в этой очереди с двусторонним обходом (при обходе очереди с двусторонним обходом от головы к хвосту).

boolean removeIf​(Predicate<? super E> filter)

Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату.

E removeLast()

Извлекает и удаляет последний элемент этой очереди с двусторонним обходом.

boolean removeLastOccurrence​(Object o)

Удаляет последнее вхождение указанного элемента в этой очереди с двусторонним обходом (при обходе очереди с двусторонним обходом от головы к хвосту).

boolean retainAll​(Collection<?> c)

Сохраняет только элементы в этой коллекции, которые содержатся в указанной коллекции (необязательная операция).

int size()

Возвращает количество элементов в этой очереди с двусторонним обходом.

Spliterator<E> spliterator()

Создает отложенную и быстропроверяемую Spliterator над элементами в этой очереди с двусторонним обходом.

Object[] toArray()

Возвращает массив, содержащий все элементы этой очереди с двусторонним обходом в правильной последовательности (от первого к последнему элементу).

<T> T[] toArray​(T[] a)

Возвращает массив, содержащий все элементы этой очереди с двусторонним обходом в правильной последовательности (от первого к последнему элементу); тип возвращаемого массива совпадает с типом указанного массива.

Методы, объявленные в классе 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

Методы, объявленные в интерфейсе java.util.Deque

descendingIterator, peekFirst, peekLast, pollFirst, pollLast

Конструкторы

ArrayDeque

public ArrayDeque()

Создаёт пустой массив дек с начальной ёмкостью, достаточной для хранения 16 элементов.

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>
Параметры:
e - элемент для добавления
Исключения:
NullPointerException - если указанный элемент равен null

addLast

public void addLast(E e)

Вставляет указанный элемент в конец этого дека.

Этот метод эквивалентен add(E).

Указано:
addLast в интерфейсе Deque<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
См. также:
AbstractCollection.add(Object)

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()

Описание скопировано из интерфейса: Deque

Возвращает и удаляет первый элемент этого дека. Этот метод отличается от pollFirst только тем, что выбрасывает исключение, если этот дек пустой.

Указано:
removeFirst в интерфейсе Deque<E>
Возвращает:
голова этого дека
Исключения:
NoSuchElementException - если этот дек пустой

removeLast

public E removeLast()

Описание скопировано из интерфейса: Deque

Возвращает и удаляет последний элемент этого дека. Этот метод отличается от pollLast только тем, что выбрасывает исключение, если этот дек пустой.

Указано:
removeLast в интерфейсе Deque<E>
Возвращает:
хвост этого дека
Исключения:
NoSuchElementException - если этот дек пустой

getFirst

public E getFirst()

Описание скопировано из интерфейса: Deque

Возвращает, но не удаляет, первый элемент этого дека. Этот метод отличается от peekFirst только тем, что выбрасывает исключение, если этот дек пустой.

Указано:
getFirst в интерфейсе Deque<E>
Возвращает:
голова этого дека
Исключения:
NoSuchElementException - если этот дек пустой

getLast

public E getLast()

Описание скопировано из интерфейса: Deque

Возвращает, но не удаляет, последний элемент этого дека. Этот метод отличается от peekLast только тем, что выбрасывает исключение, если этот дек пустой.

Указано:
getLast в интерфейсе Deque<E>
Возвращает:
хвост этого дека
Исключения:
NoSuchElementException - если этот дек пустой

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().

Указано:
remove в интерфейсе Deque<E>
Указано:
remove в интерфейсе Queue<E>
Возвращает:
голова очереди, представленной этим деком
Исключения:
NoSuchElementException - если этот дек пустой

poll

public E poll()

Возвращает и удаляет голову очереди, представленной этим деком (другими словами, первый элемент этого дека), или возвращает null , если этот дек пустой.

Этот метод эквивалентен Deque.pollFirst().

Указано:
poll в интерфейсе Deque<E>
Указано:
poll в интерфейсе Queue<E>
Возвращает:
голова очереди, представленной этим деком, или null , если этот дек пустой

element

public E element()

Возвращает, но не удаляет, голову очереди, представленной этим деком. Этот метод отличается от peek только тем, что выбрасывает исключение, если этот дек пустой.

Этот метод эквивалентен getFirst().

Указано:
element в интерфейсе Deque<E>
Указано:
element в интерфейсе Queue<E>
Возвращает:
голова очереди, представленной этим деком
Исключения:
NoSuchElementException - если этот дек пустой

peek

public E peek()

Возвращает, но не удаляет, голову очереди, представленной этим деком, или возвращает null , если этот дек пустой.

Этот метод эквивалентен Deque.peekFirst().

Указано:
peek в интерфейсе Deque<E>
Указано:
peek в интерфейсе Queue<E>
Возвращает:
голова очереди, представленной этим деком, или null , если этот дек пустой

push

public void push(E e)

Помещает элемент в стек, представленный этой декой. Другими словами, вставляет элемент в начало этой деки.

Этот метод эквивалентен addFirst(E).

Указано в:
push в интерфейсе Deque<E>
Параметры:
e - элемент для помещения
Исключения:
NullPointerException - если указанный элемент равен null

pop

public E pop()

Извлекает элемент из стека, представленного этой декой. Другими словами, удаляет и возвращает первый элемент этой деки.

Этот метод эквивалентен removeFirst().

Указано в:
pop в интерфейсе Deque<E>
Возвращает:
элемент в начале этой деки (который является вершиной стека, представленного этой декой)
Исключения:
NoSuchElementException - если эта дека пуста

size

public int size()

Возвращает количество элементов в этой деке.

Указано в:
size в интерфейсе Collection<E>
Указано в:
size в интерфейсе Deque<E>
Возвращает:
количество элементов в этой деке

isEmpty

public boolean isEmpty()

Возвращает true если эта дека не содержит элементов.

Указано в:
isEmpty в интерфейсе Collection<E>
Переопределяет:
isEmpty в классе AbstractCollection<E>
Возвращает:
true если эта дека не содержит элементов

iterator

public Iterator<E> iterator()

Возвращает итератор по элементам в этой деке. Элементы будут упорядочены от первого (головного) до последнего (хвостового). Это тот же порядок, в котором элементы будут извлечены из деки (с помощью последовательных вызовов remove() или извлечены из стека (с помощью последовательных вызовов pop()).

Указано в:
iterator в интерфейсе Collection<E>
Указано в:
iterator в интерфейсе Deque<E>
Указано в:
iterator в интерфейсе Iterable<E>
Указано в:
iterator в классе AbstractCollection<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)

Описание скопировано из интерфейса: Iterable

Выполняет заданное действие для каждого элемента Iterable пока все элементы не будут обработаны или действие не вызовет исключение. Действия выполняются в порядке итерации, если этот порядок указан. Исключения, вызываемые действием, передаются вызывающей стороне.

Поведение этого метода не определено, если действие выполняет побочные эффекты, которые изменяют основной источник элементов, если только переопределяющий класс не указал политику одновременной модификации.

Указано в:
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
См. также:
AbstractCollection.remove(Object), AbstractCollection.contains(Object)

retainAll

public boolean retainAll(Collection<?> c)

Описание скопировано из класса: AbstractCollection

Сохраняет только элементы в этой коллекции, которые содержатся в указанной коллекции (необязательная операция). Другими словами, удаляет из этой коллекции все ее элементы, которые не содержатся в указанной коллекции.

Указано в:
retainAll в интерфейсе Collection<E>
Переопределяет:
retainAll в классе AbstractCollection<E>
Параметры:
c - коллекция, содержащая элементы, которые необходимо сохранить в этой коллекции
Возвращает:
true если эта коллекция изменилась в результате вызова
Исключения:
NullPointerException - если эта коллекция содержит один или несколько элементов null, а указанная коллекция не допускает элементов null (необязательно), или если указанная коллекция равна null
См. также:
AbstractCollection.remove(Object), AbstractCollection.contains(Object)

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 на основе массивов и коллекций. Кроме того, этот метод позволяет точно управлять типом возвращаемого массива и может в определенных обстоятельствах использоваться для экономии затрат на выделение памяти.

Предположим, x — это дек, известно, что он содержит только строки. Следующий код можно использовать для выгрузки дека в новый выделенный массив типа String:

String[] y = x.toArray(new String[0]);
Обратите внимание, что toArray(new Object[0]) идентичен по функциональности toArray().
Определено в:
toArray в интерфейсе Collection<E>
Переопределяет:
toArray в классе AbstractCollection<E>
Тип параметров:
T - тип компонентов массива, который должен содержать коллекцию
Параметры:
a - массив, в который должны быть помещены элементы дека, если он достаточно большой; в противном случае для этой цели выделяется новый массив того же типа
Возвращает:
массив, содержащий все элементы этого дека
Исключения:
ArrayStoreException - если тип runtime указанного массива не является супертипом типа runtime каждого элемента в этом дека
NullPointerException - если указанный массив null

clone

public ArrayDeque<E> clone()

Возвращает копию этого дека.

Переопределяет:
clone в классе Object
Возвращает:
копия этого дека
См. также:
Cloneable

© 1993, 2020, 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/11/docs/api/java.base/java/util/ArrayDeque.html

Spec-Zone .ru
спецификации, руководства, описания, API