Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Класс 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() возвращает 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

  1. Ключевое слово final в Java: переменные, методы и классы
  2. Оператор instanceof в Java: полное руководство с примерами
  3. Наследование в Java: концепции, типы и практические примеры
  4. Статические вложенные классы в Java: использование, отличия и примеры
  5. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  6. Паттерн Singleton в Java: как реализовать и безопасно использовать
  7. Рефлексия в Java: инспекция классов, методов и полей во время выполнения
  8. Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
  9. Освоение Java Generics: создание переиспользуемого, типобезопасного кода
  10. Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление