English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массив

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Список (List)

Java Queue (очередь)

Java Map коллекция

Java Set коллекция

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

Stack Java

В этом руководстве мы будем учиться на примерах 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()

Чтобы добавить элемент в вершину стека, мы используем метод 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()

Чтобы удалить элемент с вершины стека, мы используем метод 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()

Этот метод 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()

Чтобы проверить, пуст ли стек, мы используем метод 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: [Собака, Конь, Кот]
Стек пуст? нет

Использование ArrayDeque вместо Stack

Этот класс Stack предоставляет прямой доступ к структуру данных стека. Однако, рекомендуется не использовать его. Вместо этого используйте класс ArrayDeque (реализующий интерфейс Deque) для реализации структуры данных стека в Java.

Чтобы узнать больше информации, пожалуйста, посетите:ArrayDeque Java