English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы будем учиться на примерах Java Stack класс и его методы.
Java Collection Framework имеет класс под названием Stack, который предоставляет функции структуры данных стек.
класс Stack наследует класс Vector.
В стеке, элементы хранятся впоследним вошедшим, первым вышедшимспособа хранения и доступа. То есть, элементы добавляются в顶端 стека и удаляются с его顶端.
Для создания стека нам нужно сначала импортировать пакет java.util.Stack. После импорта пакета, мы можем использовать Java для создания стека.
Stack<Type> stack = new Stack<>();
Здесь Type указывает на тип стека. Например,
//Создание стека типа целых чисел Stack<Integer> stacks = new Stack<>(); //Создание стека типа строки Stack<String> stacks = new Stack<>();
Поскольку Stack наследует класс Vector, он наследует все методы Vector. Чтобы узнать о различных методах Vector, пожалуйста, посетитеJava Vector Class.
Кроме этих методов, класс Stack включает 5 методов, отличающихся от Vector.
Чтобы добавить элемент в вершину стека, мы используем метод push(). Например,
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); //Добавление элементов в Stack animals.push("Собака"); animals.push("Конь"); animals.push("Кот"); System.out.println("Stack: " + animals); } }
Результат вывода
Stack: [Собака, Конь, Кот]
Чтобы удалить элемент с вершины стека, мы используем метод pop(). Например,
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); //Добавление элемента в Stack animals.push("Собака"); animals.push("Конь"); animals.push("Кот"); System.out.println("Исходный стек: " + animals); //Удаление элемента из стека, принцип LIFO String element = animals.pop(); System.out.println("Удаление элемента: " + element); } }
Результат вывода
Исходный стек: [Dog, Horse, Cat] Удаление элемента: Cat
Этот метод peek() возвращает объект с вершины стека. Например,
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); //Добавление элементов в Stack animals.push("Собака"); animals.push("Конь"); animals.push("Кот"); System.out.println("Stack: " + animals); //Доступ к элементу с вершины, принцип LIFO String element = animals.peek(); System.out.println("Элемент на вершине: " + element); } }
Результат вывода
Stack: [Собака, Конь, Кот] Элемент на вершине: Cat
Чтобы поиска элемента в стеке, мы используем метод search(). Он возвращает положение элемента с верхушки стека. Например,
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); //Добавление элементов в Stack animals.push("Собака"); animals.push("Конь"); animals.push("Кот"); System.out.println("Stack: " + animals); //Поиск элемента int position = animals.search("Horse"); System.out.println("Положение элемента Horse: " + position); } }
Результат вывода
Stack: [Собака, Конь, Кот] Положение элемента Horse: 2
Чтобы проверить, пуст ли стек, мы используем метод empty(). Например,
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); //Добавление элементов в Stack animals.push("Собака"); animals.push("Конь"); animals.push("Кот"); System.out.println("Stack: " + animals); //Проверка, пуст ли стек boolean result = animals.empty(); System.out.println("Стек пуст? " + result); } }
Результат вывода
Stack: [Собака, Конь, Кот] Стек пуст? нет
Этот класс Stack предоставляет прямой доступ к структуру данных стека. Однако, рекомендуется не использовать его. Вместо этого используйте класс ArrayDeque (реализующий интерфейс Deque) для реализации структуры данных стека в Java.
Чтобы узнать больше информации, пожалуйста, посетите:ArrayDeque Java