От Stack к Deque и ArrayDeque
Используйте интерфейс Deque с ArrayDeque вместо устаревшего класса Stack.
Сравнение кода
✕ Legacy Stack
Stack<String> stack = new Stack<>();
stack.push("task");
String next = stack.pop();
✓ Deque API
Deque<String> stack = new ArrayDeque<>();
stack.push("task");
String next = stack.pop();
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Лучшая абстракция
Deque явно моделирует операции как стека, так и очереди.
Меньше накладных расходов
ArrayDeque обходится без устаревшей синхронизации Vector.
Больше гибкости
Один интерфейс поддерживает алгоритмы LIFO и FIFO.
Старый подход
Stack
Современный подход
Deque с ArrayDeque
Начиная с JDK
6
Сложность
Начинающий
Поддержка JDK
От Stack к Deque и ArrayDeque
Доступно
Доступно начиная с JDK 6 (декабрь 2006)
Как это работает
Stack наследует устаревший синхронизированный класс Vector. Deque непосредственно моделирует операции со стеком, а ArrayDeque является предпочтительной универсальной реализацией для работы в памяти по принципу LIFO.
Связанная документация
Доказательство