📜  Java堆栈Stack类

📅  最后修改于: 2020-09-26 16:13:16             🧑  作者: Mango

在本教程中,我们将借助示例学习Java Stack类及其方法。

 

Java集合框架具有一个名为Stack的类,该类提供堆栈数据结构的功能。

Stack类扩展了Vector类。

Java Stack class extending the Vector class


堆栈实施

在堆栈中,以后进先出的方式存储和访问元素。即,元素被添加到堆栈的顶部,并从堆栈的顶部移除。

Working of stack data structure


创建堆栈

为了创建堆栈,我们必须首先导入java.util.Stack包。导入包后,就可以使用Java创建堆栈。

Stack stacks = new Stack<>();

在这里, Type表示堆栈的类型。例如,

// Create Integer type stack
Stack stacks = new Stack<>();

// Create String type stack
Stack 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 animals= new Stack<>();

        // Add elements to 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 animals= new Stack<>();

        // Add elements to Stack
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Initial Stack: " + animals);

        // Remove element stacks
        String element = animals.pop();
        System.out.println("Removed Element: " + element);
    }
}

输出

Initial Stack: [Dog, Horse, Cat]
Removed Element: Cat

peek()方法

peek()方法从堆栈顶部返回一个对象。例如,

import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack animals= new Stack<>();

        // Add elements to Stack
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);

        // Access element from the top
        String element = animals.peek();
        System.out.println("Element at top: " + element);

    }
}

输出

Stack: [Dog, Horse, Cat]
Element at top: Cat

要搜索堆栈中的元素,我们使用search()方法。它从堆栈的顶部返回元素的位置。例如,

import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack animals= new Stack<>();

        // Add elements to Stack
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);

        // Search an element
        int position = animals.search("Horse");
        System.out.println("Position of Horse: " + position);
    }
}

输出

Stack: [Dog, Horse, Cat]
Position of Horse: 2

empty()方法

要检查堆栈是否为空,我们使用empty()方法。例如,

import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack animals= new Stack<>();

        // Add elements to Stack
        animals.push("Dog");
        animals.push("Horse");
        animals.push("Cat");
        System.out.println("Stack: " + animals);

        // Check if stack is empty
        boolean result = animals.empty();
        System.out.println("Is the stack empty? " + result);
    }
}

输出

Stack: [Dog, Horse, Cat]
Is the stack empty? false

使用ArrayDeque而不是堆栈

Stack类提供了堆栈数据结构的直接实现。但是,建议不要使用它。而是使用ArrayDeque类(实现Deque接口)在Java中实现堆栈数据结构。

要了解更多信息,请访问:

  • Java ArrayDeque
  • 为什么要使用Deque over Stack?