Класс 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) Возвращает |
Iterator<E> |
descendingIterator() Возвращает итератор над элементами в этой двусторонней очереди в обратном порядке. |
E |
element() Извлекает, но не удаляет, голову очереди, представленной этой двусторонней очередью. |
E |
getFirst() Возвращает, но не удаляет, первый элемент этой двусторонней очереди. |
E |
getLast() Возвращает, но не удаляет, последний элемент этой двусторонней очереди. |
boolean |
isEmpty() Возвращает |
Iterator<E> |
iterator() Возвращает итератор над элементами в этой двусторонней очереди. |
boolean |
offer(E e) Вставляет указанный элемент в конец этой двусторонней очереди. |
boolean |
offerFirst(E e) Вставляет указанный элемент в начало этой двусторонней очереди. |
boolean |
offerLast(E e) Вставляет указанный элемент в конец этой двусторонней очереди. |
E |
peek() Возвращает голову очереди, представленной этой двусторонней очередью, или возвращает |
E |
peekFirst() Возвращает первый элемент этой двусторонней очереди или возвращает |
E |
peekLast() Возвращает последний элемент этой двусторонней очереди или возвращает |
E |
poll() Возвращает и удаляет голову очереди, представленной этой двусторонней очередью (другими словами, первый элемент этой двусторонней очереди), или возвращает |
E |
pollFirst() Возвращает и удаляет первый элемент этой двусторонней очереди, или возвращает |
E |
pollLast() Возвращает и удаляет последний элемент этой двусторонней очереди, или возвращает |
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() Создает отложенную привязку и быстродействующий |
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()
Возвращает копию этого дека.
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.