Класс 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 |
Создаёт пустой массивский дек с начальной ёмкостью, достаточной для хранения указанного количества элементов. |
ArrayDeque |
Создаёт дек, содержащий элементы указанного набора в порядке, в котором они возвращаются итератором набора. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в конец этого дека. |
boolean |
addAll |
Добавляет все элементы в указанном наборе в конец этого дека, как если бы вызывали addLast(E) для каждого элемента в порядке, в котором они возвращаются итератором набора. |
void |
addFirst |
Вставляет указанный элемент в начало этого дека. |
void |
addLast |
Вставляет указанный элемент в конец этого дека. |
void |
clear() |
Удаляет все элементы из этого дека. |
ArrayDeque<E> |
clone() |
Возвращает копию этого дека. |
boolean |
contains |
Возвращает true, если этот дек содержит указанный элемент. |
Iterator<E> |
descendingIterator() |
Возвращает итератор над элементами в этом деке в обратном порядке следования. |
E |
element() |
Возвращает голову очереди, представленной этим деком, но не удаляет её. |
void |
forEach |
Выполняет заданное действие для каждого элемента Iterable до тех пор, пока все элементы не будут обработаны или действие не выбросит исключение. |
E |
getFirst() |
Возвращает первый элемент этого дека, но не удаляет его. |
E |
getLast() |
Возвращает последний элемент этого дека, но не удаляет его. |
boolean |
isEmpty() |
Возвращает true, если этот дек не содержит элементов. |
Iterator<E> |
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<E> |
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> - Параметры:
-
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 - См. также:
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> - Возвращает:
- начало этой очереди
- Исключения:
-
NoSuchElementException- если эта очередь пуста
removeLast
public E removeLast()
DequepollLast только тем, что он вызывает исключение, если эта очередь пуста.- Указано в:
-
removeLastв интерфейсеDeque<E> - Возвращает:
- конец этой очереди
- Исключения:
-
NoSuchElementException- если эта очередь пуста
pollFirst
public E pollFirst()
Dequenull если эта очередь пуста.- Указано в:
-
pollFirstв интерфейсеDeque<E> - Возвращает:
- начало этой очереди или
nullесли эта очередь пуста
pollLast
public E pollLast()
Dequenull если эта очередь пуста.- Указано в:
-
pollLastв интерфейсеDeque<E> - Возвращает:
- конец этой очереди или
nullесли эта очередь пуста
getFirst
public E getFirst()
DequepeekFirst только тем, что он вызывает исключение, если эта очередь пуста.- Указано в:
-
getFirstв интерфейсеDeque<E> - Возвращает:
- начало этой очереди
- Исключения:
-
NoSuchElementException- если эта очередь пуста
getLast
public E getLast()
DequepeekLast только тем, что он вызывает исключение, если эта очередь пуста.- Указано в:
-
getLastв интерфейсеDeque<E> - Возвращает:
- конец этой очереди
- Исключения:
-
NoSuchElementException- если эта очередь пуста
peekFirst
public E peekFirst()
Dequenull если эта очередь пуста.- Указано в:
-
peekFirstв интерфейсеDeque<E> - Возвращает:
- начало этой очереди или
nullесли эта очередь пуста
peekLast
public E peekLast()
Dequenull если эта очередь пуста.- Указано в:
-
peekLastв интерфейсеDeque<E> - Возвращает:
- конец этой очереди или
nullесли эта очередь пуста
removeFirstOccurrence
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 , если эта очередь с двойной очередью содержала указанный элемент (или, что эквивалентно, если эта очередь с двойной очередью изменилась в результате вызова).- Specified by:
-
removeLastOccurrenceв интерфейсеDeque<E> - Parameters:
-
o- элемент, который нужно удалить из этой очереди с двойной очередью, если он присутствует - Returns:
-
true, если очередь с двойной очередью содержала указанный элемент
добавить
public boolean add(E e)
Этот метод эквивалентен addLast(E).
- Specified by:
-
addв интерфейсеCollection<E> - Specified by:
-
addв интерфейсеDeque<E> - Specified by:
-
addв интерфейсеQueue<E> - Overrides:
-
addв классеAbstractCollection<E> - Parameters:
-
e- добавляемый элемент - Returns:
-
true(как указано вCollection.add(E)) - Throws:
-
NullPointerException- если указанный элемент равен null
предложить
public boolean offer(E e)
Этот метод эквивалентен offerLast(E).
- Specified by:
-
offerв интерфейсеDeque<E> - Specified by:
-
offerв интерфейсеQueue<E> - Parameters:
-
e- добавляемый элемент - Returns:
-
true(как указано вQueue.offer(E)) - Throws:
-
NullPointerException- если указанный элемент равен null
удалить
public E remove()
poll() только тем, что выбрасывает исключение, если эта очередь с двойной очередью пуста. Этот метод эквивалентен removeFirst().
- Specified by:
-
removeв интерфейсеDeque<E> - Specified by:
-
removeв интерфейсеQueue<E> - Returns:
- голова очереди, представленная этой очередью с двойной очередью
- Throws:
-
NoSuchElementException- если эта очередь с двойной очередью пуста
получитьИУдалить
public E poll()
null , если эта очередь с двойной очередью пуста. Этот метод эквивалентен pollFirst().
- Specified by:
-
pollв интерфейсеDeque<E> - Specified by:
-
pollв интерфейсеQueue<E> - Returns:
- голова очереди, представленная этой очередью с двойной очередью, или
null, если эта очередь с двойной очередью пуста
элемент
public E element()
peek только тем, что выбрасывает исключение, если эта очередь с двойной очередью пуста. Этот метод эквивалентен getFirst().
- Specified by:
-
elementв интерфейсеDeque<E> - Specified by:
-
elementв интерфейсеQueue<E> - Returns:
- голова очереди, представленная этой очередью с двойной очередью
- Throws:
-
NoSuchElementException- если эта очередь с двойной очередью пуста
получить
public E peek()
null , если эта очередь с двойной очередью пуста. Этот метод эквивалентен peekFirst().
- Specified by:
-
peekв интерфейсеDeque<E> - Specified by:
-
peekв интерфейсеQueue<E> - Returns:
- голова очереди, представленная этой очередью с двойной очередью, или
null, если эта очередь с двойной очередью пуста
положить
public void push(E e)
Этот метод эквивалентен addFirst(E).
- Specified by:
-
pushв интерфейсеDeque<E> - Parameters:
-
e- элемент для помещения - Throws:
-
NullPointerException- если указанный элемент равен null
вытащить
public E pop()
Этот метод эквивалентен removeFirst().
- Specified by:
-
popв интерфейсеDeque<E> - Returns:
- элемент в начале этой очереди с двойной очередью (который является вершиной стека, представленного этой очередью с двойной очередью)
- Throws:
-
NoSuchElementException- если эта очередь с двойной очередью пуста
размер
public int size()
- Specified by:
-
sizeв интерфейсеCollection<E> - Specified by:
-
sizeв интерфейсеDeque<E> - Returns:
- количество элементов в этой очереди с двойной очередью
пустая
public boolean isEmpty()
true , если эта очередь с двойной очередью не содержит элементов.- Specified by:
-
isEmptyв интерфейсеCollection<E> - Overrides:
-
isEmptyв классеAbstractCollection<E> - Returns:
-
true, если эта очередь с двойной очередью не содержит элементов
итератор
public Iterator<E> iterator()
remove()) или извлекаться из стека (посредством последовательных вызовов pop()).- Specified by:
-
iteratorв интерфейсеCollection<E> - Specified by:
-
iteratorв интерфейсеDeque<E> - Specified by:
-
iteratorв интерфейсеIterable<E> - Specified by:
-
iteratorв классеAbstractCollection<E> - Returns:
- итератор по элементам в этой очереди с двойной очередью
обратныйИтератор
public Iterator<E> descendingIterator()
Deque- Specified by:
-
descendingIteratorв интерфейсеDeque<E> - Returns:
- итератор по элементам в этой очереди с двойной очередью в обратном порядке
разделитель
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- Указано в:
-
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
public ArrayDeque<E> clone()
- Переопределяет:
-
cloneв классеObject - Возвращает:
- копию этой очереди
- См. также:
© 1993, 2021, 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/17/docs/api/java.base/java/util/ArrayDeque.html