Класс Java Stack: полное руководство по использованию и методам
Класс Java Stack
Это руководство объясняет класс Stack в Java, его основные методы и практические примеры для освоения операций со стеком.
Java Collections Framework включает класс Stack, реализующий классическую структуру данных стек. Согласно официальной документации Java, Stack расширяет Vector, наследуя все его методы и добавляя операции, специфичные для стека.
Реализация Stack
Стек следует принципу Last In, First Out (LIFO): элементы добавляются на вершину и удаляются с вершины. На следующей диаграмме показано это поведение.
Создание Stack
Для создания стека импортируйте java.util.Stack и создайте экземпляр с нужным обобщённым типом:
Stack<Type> stack = new Stack<>();
Примеры:
// Стек целых чисел
Stack<Integer> intStack = new Stack<>();
// Стек строк
Stack<String> stringStack = new Stack<>();
Методы Stack
Помимо унаследованных методов Vector, Stack предоставляет пять специальных операций, отличающих его от общих коллекций. Для полного списка методов Vector обратитесь к документации класса Vector.
Метод push()
Метод push() добавляет элемент на вершину стека.
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals = new Stack<>();
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
}
}
Вывод
Stack: [Dog, Horse, Cat]
Метод pop()
Метод pop() удаляет и возвращает элемент на вершине стека.
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals = new Stack<>();
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Initial Stack: " + animals);
String removed = animals.pop();
System.out.println("Removed Element: " + removed);
}
}
Вывод
Initial Stack: [Dog, Horse, Cat] Removed Element: Cat
Метод peek()
Метод peek() получает верхний элемент без его удаления.
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals = new Stack<>();
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
String top = animals.peek();
System.out.println("Element at top: " + top);
}
}
Вывод
Stack: [Dog, Horse, Cat] Element at top: Cat
Метод search()
Метод search() возвращает 1-базовую позицию элемента от вершины стека или -1, если элемент отсутствует.
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals = new Stack<>();
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
int pos = animals.search("Horse");
System.out.println("Position of Horse: " + pos);
}
}
Вывод
Stack: [Dog, Horse, Cat] Position of Horse: 2
Метод empty()
Метод empty() проверяет, есть ли в стеке элементы.
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals = new Stack<>();
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
boolean isEmpty = animals.empty();
System.out.println("Is the stack empty? " + isEmpty);
}
}
Вывод
Stack: [Dog, Horse, Cat] Is the stack empty? false
Используйте ArrayDeque вместо Stack
Хотя Stack реализует стек, он считается устаревшим. Современный Java-код предпочитает ArrayDeque (реализующий интерфейс Deque) для функциональности стека, так как он предлагает лучшую производительность и более чёткую семантику. Подробнее см.:
java
- Ключевое слово final в Java: переменные, методы и классы
- Оператор instanceof в Java: полное руководство с примерами
- Наследование в Java: концепции, типы и практические примеры
- Статические вложенные классы в Java: использование, отличия и примеры
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Паттерн Singleton в Java: как реализовать и безопасно использовать
- Рефлексия в Java: инспекция классов, методов и полей во время выполнения
- Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
- Освоение Java Generics: создание переиспользуемого, типобезопасного кода
- Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление