Назад к вопросам
Junior
71
questionbank
Какую коллекцию в Java реализует дисциплину обслуживания FILO (Last In, First Out)?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
java.util.Stack.
Является подклассом Vector. Основные методы:
push(E item): добавляет элемент в вершину стека.pop(): извлекает элемент из вершины стека с его удалением.peek(): возвращает элемент с вершины стека без его удаления.empty(): проверяет, пуст ли стек.search(Object o): возвращает 1-основу индекса первого вхождения элемента.
Пример использования:
import java.util.Stack;
// Создание стека
Stack<String> stack = new Stack<>();
// Добавление элементов (push)
stack.push("Элемент 1");
stack.push("Элемент 2");
stack.push("Элемент 3");
// Проверка вершины (peek)
System.out.println("Вершина стека: " + stack.peek()); // Выведет "Элемент 3"
// Извлечение элементов (pop)
System.out.println("Извлеченный элемент: " + stack.pop()); // Выведет "Элемент 3"
System.out.println("Извлеченный элемент: " + stack.pop()); // Выведет "Элемент 2"
// Проверка на пустоту (empty)
System.out.println("Стек пуст? " + stack.empty()); // Выведет "false"
// Извлечение последнего элемента
System.out.println("Извлеченный элемент: " + stack.pop()); // Выведет "Элемент 1"
// Проверка на пустоту (empty) после извлечения всех элементов
System.out.println("Стек пуст? " + stack.empty()); // Выведет "true"
Обратите внимание, что официальная документация Java рекомендует использовать Deque (например, ArrayDeque) как предпочтительную альтернативу Stack для реализации стека, поскольку Stack является устаревшим классом из более ранних версий Java и не поддерживает интерфейс List в полной мере. Однако Stack все равно реализует дисциплину FILO.
Пример с использованием ArrayDeque в качестве стека:
import java.util.Deque;
import java.util.ArrayDeque;
// Создание Deque для использования как стека
Deque<String> stackDeque = new ArrayDeque<>();
// Добавление элементов (push)
stackDeque.push("Элемент A");
stackDeque.push("Элемент B");
stackDeque.push("Элемент C");
// Проверка вершины (peek)
System.out.println("Вершина стека (Deque): " + stackDeque.peek()); // Выведет "Элемент C"
// Извлечение элементов (pop)
System.out.println("Извлеченный элемент (Deque): " + stackDeque.pop()); // Выведет "Элемент C"
System.out.println("Извлеченный элемент (Deque): " + stackDeque.pop()); // Выведет "Элемент B"
Методы push, pop и peek в Deque эквивалентны соответствующим методам в Stack при использовании его в качестве стека.