Класс 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
Stack, когда используется как стек, и быстрее, чем LinkedList, когда используется как очередь. Большинство ArrayDeque операций выполняются за амортизированное постоянное время. К исключениям относятся remove, removeFirstOccurrence, removeLastOccurrence, contains, iterator.remove(), а также операции с набором элементов, все из которых выполняются за линейное время.
Итераторы, возвращаемые методом iterator этого класса, являются *быстродействующими*: если очередь с двух концов изменяется каким-либо образом после создания итератора, кроме как через собственный метод итератора remove, итератор, как правило, сгенерирует исключение ConcurrentModificationException. Таким образом, при одновременном изменении итератор быстро и четко завершит работу, а не рискует произвольным, неопределённым поведением в неопределённое время.
Обратите внимание, что быстродействующее поведение итератора не гарантируется, поскольку в общем случае невозможно дать какие-либо жёсткие гарантии при одновременном изменении без синхронизации. Быстродействующие итераторы генерируют ConcurrentModificationException в случае необходимости, на основе максимального усилия. Поэтому неправильно разрабатывать программы, которые полагаются на это исключение для корректности: *быстродействующее поведение итераторов следует использовать только для обнаружения ошибок*.
Этот класс и его итератор реализуют все *необязательные* методы интерфейсов Collection, SequencedCollection и Iterator.
Этот класс является частью Фреймворка Java Collections.
- С тех пор:
- 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 |
Выполняет заданное действие для каждого элемента двустороннего циклического списка до тех пор, пока все элементы не будут обработаны или действие не выбросит исключение. |
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
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> - Унаследовано от:
-
getFirstв интерфейсеSequencedCollection<E> - Возвращает:
- голова этой очереди
- Исключения:
-
NoSuchElementException- если очередь пуста
getLast
public E getLast()
DequepeekLast только тем, что выбросит исключение, если очередь пуста.- Унаследовано от:
-
getLastв интерфейсеDeque<E> - Унаследовано от:
-
getLastв интерфейсеSequencedCollection<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если очередь содержала указанный элемент
removeLastOccurrence
public boolean removeLastOccurrence(Object o)
e такой что o.equals(e) (если такой элемент существует). Возвращает true если эта двусторонняя очередь содержала указанный элемент (или, что равносильно, если эта двусторонняя очередь изменилась в результате вызова).- Specified by:
-
removeLastOccurrenceв интерфейсеDeque<E> - Parameters:
-
o- элемент, который нужно удалить из этой двусторонней очереди, если он присутствует - Returns:
-
trueесли двусторонняя очередь содержала указанный элемент
add
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
offer
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
remove
public E remove()
poll() только тем, что он выбрасывает исключение, если этот двусторонний очередь пуст. Этот метод эквивалентен removeFirst().
- Specified by:
-
removeв интерфейсеDeque<E> - Specified by:
-
removeв интерфейсеQueue<E> - Returns:
- голова очереди, представленной этим двусторонним очереди
- Throws:
-
NoSuchElementException- если этот двусторонний очередь пуст
poll
public E poll()
null если этот двусторонний очередь пуст. Этот метод эквивалентен pollFirst().
- Specified by:
-
pollв интерфейсеDeque<E> - Specified by:
-
pollв интерфейсеQueue<E> - Returns:
- голова очереди, представленной этим двусторонним очереди, или
nullесли этот двусторонний очередь пуст
element
public E element()
peek только тем, что он выбрасывает исключение, если этот двусторонний очередь пуст. Этот метод эквивалентен getFirst().
- Specified by:
-
elementв интерфейсеDeque<E> - Specified by:
-
elementв интерфейсеQueue<E> - Returns:
- голова очереди, представленной этим двусторонним очереди
- Throws:
-
NoSuchElementException- если этот двусторонний очередь пуст
peek
public E peek()
null если этот двусторонний очередь пуст. Этот метод эквивалентен peekFirst().
- Specified by:
-
peekв интерфейсеDeque<E> - Specified by:
-
peekв интерфейсеQueue<E> - Returns:
- голова очереди, представленной этим двусторонним очереди, или
nullесли этот двусторонний очередь пуст
push
public void push(E e)
Этот метод эквивалентен addFirst(E).
- Specified by:
-
pushв интерфейсеDeque<E> - Parameters:
-
e- элемент для помещения в стек - Throws:
-
NullPointerException- если указанный элемент равен null
pop
public E pop()
Этот метод эквивалентен removeFirst().
- Specified by:
-
popв интерфейсеDeque<E> - Returns:
- элемент в начале этого двустороннего очереди (который является вершиной стека, представленного этим двусторонним очереди)
- Throws:
-
NoSuchElementException- если этот двусторонний очередь пуст
size
public int size()
- Specified by:
-
sizeв интерфейсеCollection<E> - Specified by:
-
sizeв интерфейсеDeque<E> - Returns:
- количество элементов в этом двустороннем очереди
isEmpty
public boolean isEmpty()
true если этот двусторонний очередь не содержит элементов.- Specified by:
-
isEmptyв интерфейсеCollection<E> - Overrides:
-
isEmptyв классеAbstractCollection<E> - Returns:
-
trueесли этот двусторонний очередь не содержит элементов
iterator
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:
- итератор по элементам в этом двустороннем очереди
descendingIterator
public Iterator<E> descendingIterator()
Deque- Specified by:
-
descendingIteratorв интерфейсеDeque<E> - Returns:
- итератор по элементам в этом двустороннем очереди в обратном порядке
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- Определено в:
-
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.
- Определено в:
-
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 - Возвращает:
- копия этого дека
- См. также:
© 1993, 2023, 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/21/docs/api/java.base/java/util/ArrayDeque.html