Какую коллекцию в Java следует использовать для реализации стека (Stack)?

«Какую коллекцию в Java следует использовать для реализации стека (Stack)?» — вопрос из категории Алгоритмы и структуры данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для реализации стека в Java рекомендуется использовать интерфейс Deque и его реализацию ArrayDeque.

Почему Deque (ArrayDeque)?

  • Производительность: Операции push(), pop() и peek() выполняются за O(1).
  • Современная альтернатива: Класс Stack устарел (с Java 1.0), наследует от Vector и имеет синхронизированные методы, что создает ненужные накладные расходы в однопоточных сценариях.
  • Чистота API: Deque предоставляет четкий и эффективный API для операций со стеком.

Пример использования:

import java.util.ArrayDeque;
import java.util.Deque;

Deque<Integer> stack = new ArrayDeque<>();
stack.push(10); // Добавить элемент
int topElement = stack.peek(); // Посмотреть верхний элемент (без удаления)
int removedElement = stack.pop(); // Извлечь и удалить верхний элемент