Deque
Два конца одной структуры
Deque (double-ended queue) — двусторонняя очередь. В отличие от обычной очереди, она позволяет добавлять, смотреть и удалять элементы как с начала, так и с конца. Поэтому один deque может использоваться и как стек, и как очередь, а иногда алгоритму действительно нужны оба конца одновременно.
Deque<Integer> deque = new ArrayDeque<>();
deque.addFirst(20);
deque.addFirst(10);
deque.addLast(30);
int left = deque.removeFirst(); // 10
int right = deque.removeLast(); // 30
После этих операций в структуре останется только 20.
У ArrayDeque операции на обоих концах выполняются за O(1) амортизированно.
Выбирай методы по роли структуры
Интерфейс Deque содержит много похожих методов. Если используешь его как стек,
удобно придерживаться push, pop, peek.
Если как очередь — явно работать через addLast, removeFirst
и peekFirst. Так направление движения данных видно прямо из кода.
ArrayDeque не допускает
null.
Это полезно помнить, потому что null у некоторых методов очереди используется как признак отсутствия элемента.
Проверь себя
Разбор задания
Ментор знает решение и поможет тебе прийти к нему самостоятельно
Войди, чтобы использовать Ментора
Ментор учитывает текущую задачу и историю диалога.
Войти
Проверь важные нюансы и ответ после собственной попытки.
Войди, чтобы посмотреть решение
Решение и разбор доступны после авторизации.
Войти