Spec-Zone.ru › OpenJDK 8

Класс ArrayDeque<E>

  • java.lang.Object
    • java.util.AbstractCollection<E>
      • java.util.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

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

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

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

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

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

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

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

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

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

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

ArrayDeque(Collection<? extends E> c)

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

ArrayDeque(int numElements)

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

Методы

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

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

void addFirst(E e)

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

void addLast(E e)

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

void clear()

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

ArrayDeque<E> clone()

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

boolean contains(Object o)

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

Iterator<E> descendingIterator()

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

E element()

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

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

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

E peekLast()

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

E poll()

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

E pollFirst()

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

E pollLast()

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

E pop()

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

void push(E e)

Помещает элемент в стек, представленный этой двусторонней очередью.

E remove()

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

boolean remove(Object o)

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

E removeFirst()

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

boolean removeFirstOccurrence(Object o)

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

E removeLast()

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

boolean removeLastOccurrence(Object o)

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

int size()

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

Spliterator<E> spliterator()

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

Object[] toArray()

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

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

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

Методы, унаследованные от класса java.util.AbstractCollection

addAll, containsAll, removeAll, retainAll, toString

Методы, унаследованные от класса java.lang.Object

equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Методы, унаследованные от интерфейса java.util.Collection

addAll, containsAll, equals, hashCode, parallelStream, removeAll, removeIf, retainAll, stream

Методы, унаследованные от интерфейса java.lang.Iterable

forEach

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

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

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 - если этот дек пуст

pollFirst

public E pollFirst()

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

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

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

pollLast

public E pollLast()

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

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

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

getFirst

public E getFirst()

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

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

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

getLast

public E getLast()

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

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

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

peekFirst

public E peekFirst()

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

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

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

peekLast

public E peekLast()

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

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

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

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 если этот дек пустой.

Этот метод эквивалентен методу 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 если этот дек пустой.

Этот метод эквивалентен методу 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>
Определено в:
size в классе AbstractCollection<E>
Возвращает:
количество элементов в этом деке

isEmpty

public boolean isEmpty()

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

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

iterator

public Iterator<E> iterator()

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

Определено в:
iterator в интерфейсе Iterable<E>
Определено в:
iterator в интерфейсе Collection<E>
Определено в:
iterator в интерфейсе Deque<E>
Определено в:
iterator в классе AbstractCollection<E>
Возвращает:
итератор по элементам в этом деке

descendingIterator

public Iterator<E> descendingIterator()

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

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

Определено в:
descendingIterator в интерфейсе Deque<E>
Возвращает:
итератор по элементам в этом деке в обратном порядке

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.

Определено в:
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 - если тип времени выполнения указанного массива не является надтипом типа времени выполнения каждого элемента в этом деке
NullPointerException - если указанный массив равен null

clone

public ArrayDeque<E> clone()

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

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

spliterator

public Spliterator<E> spliterator()

Создает поздне-связанный и быстрый-при ошибке Spliterator над элементами в этом деке.

Этот Spliterator сообщает о Spliterator.SIZED, Spliterator.SUBSIZED, Spliterator.ORDERED и Spliterator.NONNULL. Переопределяющие реализации должны документировать сообщения о дополнительных характеристиках.

Указано в:
spliterator в интерфейсе Iterable<E>
Указано в:
spliterator в интерфейсе Collection<E>
Возвращает:
итератор Spliterator по элементам в этом очереди с двойным концом
С тех пор, как:
1.8

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API