Класс 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
Реализация очереди с двусторонним обходом на основе массива с изменяемым размером. Очереди с двусторонним обходом на основе массива не имеют ограничений по вместимости; они увеличиваются по мере необходимости для поддержки использования. Они не потокобезопасны; при отсутствии внешней синхронизации они не поддерживают одновременный доступ нескольких потоков. Нулевые элементы запрещены. Этот класс, скорее всего, будет быстрее, чем 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) | Добавляет все элементы в указанной коллекции в конец этой очереди с двусторонним обходом, как если бы вызывался |
void | addFirst(E e) | Вставляет указанный элемент в начало этой очереди с двусторонним обходом. |
void | addLast(E e) | Вставляет указанный элемент в конец этой очереди с двусторонним обходом. |
void | clear() | Удаляет все элементы из этой очереди с двусторонним обходом. |
ArrayDeque<E> | clone() | Возвращает копию этой очереди с двусторонним обходом. |
boolean | contains(Object o) | Возвращает |
E | element() | Извлекает, но не удаляет, голову очереди, представленной этой очередью с двусторонним обходом. |
void | forEach(Consumer<? super E> action) | Выполняет заданное действие для каждого элемента |
E | getFirst() | Извлекает, но не удаляет, первый элемент этой очереди с двусторонним обходом. |
E | getLast() | Извлекает, но не удаляет, последний элемент этой очереди с двусторонним обходом. |
boolean | isEmpty() | Возвращает |
Iterator<E> | iterator() | Возвращает итератор по элементам этой очереди с двусторонним обходом. |
boolean | offer(E e) | Вставляет указанный элемент в конец этой очереди с двусторонним обходом. |
boolean | offerFirst(E e) | Вставляет указанный элемент в начало этой очереди с двусторонним обходом. |
boolean | offerLast(E e) | Вставляет указанный элемент в конец этой очереди с двусторонним обходом. |
E | peek() | Извлекает, но не удаляет, голову очереди, представленной этой очередью с двусторонним обходом, или возвращает |
E | poll() | Извлекает и удаляет голову очереди, представленной этой очередью с двусторонним обходом (другими словами, первый элемент этой очереди с двусторонним обходом), или возвращает |
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() | Создает отложенную и быстропроверяемую |
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()
Возвращает копию этого дека.
© 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