Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

ArrayDeque

Быстрая двусторонняя очередь на массиве — замена `Stack` и `LinkedList`.

Доступно с: Java 1.6

Синтаксис

public class ArrayDeque<E> implements Deque<E>

Примеры

Как очередь:

void main() {
    Queue<String> queue = new ArrayDeque<>();
    queue.offer("a");
    queue.offer("b");
    IO.println(queue.poll() + " " + queue.poll());
}

Результат:

a b

Как стек — проверка скобок:

boolean balanced(String s) {
    Deque<Character> stack = new ArrayDeque<>();
    for (char c : s.toCharArray()) {
        if (c == '(') stack.push(c);
        else if (c == ')') {
            if (stack.isEmpty()) return false;
            stack.pop();
        }
    }
    return stack.isEmpty();
}
 
void main() {
    IO.println(balanced("(a(b)c)"));
    IO.println(balanced("(()"));
}

Результат:

true
false

Примечания

Работает быстрее LinkedList и устаревшего класса Stack. Не принимает null (NullPointerException) и не потокобезопасна; для потоков есть ConcurrentLinkedDeque и LinkedBlockingDeque.

См. также

  • Deque — Двусторонняя очередь: добавлять и забирать можно с обоих концов.
  • Queue — Очередь: элементы добавляются в конец и забираются из начала.
  • Deque.push() — Кладёт элемент на вершину стека (в начало двусторонней очереди).
  • LinkedList — Двусвязный список: реализует и `List`, и `Deque`.
  • PriorityQueue — Очередь, которая всегда выдаёт наименьший (или самый приоритетный) элемент.

Вопросы и ответы по теме

В учебнике

  • Очереди и деки — Очереди в Java: Queue и ArrayDeque, стек на основе Deque, методы offer, poll и peek, очередь с приоритетом PriorityQueue.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.