Java Stack(堆栈)
在本教程中,我们将借助示例学习Java Stack类及其方法。
Java集合框架具有一个名为Stack的类,该类提供堆栈数据结构的功能。
本Stack类继承Vector类。
堆栈的实现
在堆栈中,元素以后进先出的方式存储和访问。也就是说,元素被添加到堆栈的顶部并从堆栈的顶部移除。
创建堆栈
为了创建堆栈,我们必须先导入java.util.Stack包。导入包后,就可以使用Java创建堆栈。
Stack<Type>stacks=newStack<>();
在此,Type指示堆栈的类型。例如,
//创建整数类型堆栈Stack<Integer>stacks=newStack<>();//创建字符串类型堆栈Stack<String>stacks=newStack<>();
堆栈方法
由于Stack继承了Vector类,因此它继承了所有方法Vector。要了解不同的Vector方法,请访问Java Vector Class。
除了这些方法之外,Stack类还包括5个与Vector区别开来的方法。
push()方法
要将元素添加到堆栈的顶部,我们使用push()方法。例如,
importjava.util.Stack;classMain{publicstaticvoidmain(String[]args){Stack<String>animals=newStack<>();//将元素添加到Stackanimals.push("Dog");animals.push("Horse");animals.push("Cat");System.out.println("Stack:"+animals);}}
输出结果
Stack:[Dog,Horse,Cat]
pop()方法
要从堆栈顶部删除元素,我们使用pop()方法。例如,
importjava.util.Stack;classMain{publicstaticvoidmain(String[]args){Stack<String>animals=newStack<>();//将元素添加到Stackanimals.push("Dog");animals.push("Horse");animals.push("Cat");System.out.println("初始堆栈:"+animals);//删除堆栈元素,后进先出Stringelement=animals.pop();System.out.println("删除元素:"+element);}}
输出结果
初始堆栈:[Dog,Horse,Cat]删除元素:Cat
peek()方法
该peek()方法从堆栈顶部返回一个对象。例如,
importjava.util.Stack;classMain{publicstaticvoidmain(String[]args){Stack<String>animals=newStack<>();//将元素添加到Stackanimals.push("Dog");animals.push("Horse");animals.push("Cat");System.out.println("Stack:"+animals);//从顶部访问元素,后进先出的原则Stringelement=animals.peek();System.out.println("顶部元素:"+element);}}
输出结果
Stack:[Dog,Horse,Cat]顶部元素:Cat
search()方法
要搜索堆栈中的元素,我们使用search()方法。它从堆栈的顶部返回元素的位置。例如,
importjava.util.Stack;classMain{publicstaticvoidmain(String[]args){Stack<String>animals=newStack<>();//将元素添加到Stackanimals.push("Dog");animals.push("Horse");animals.push("Cat");System.out.println("Stack:"+animals);//搜索元素intposition=animals.search("Horse");System.out.println("元素Horse的位置:"+position);}}
输出结果
Stack:[Dog,Horse,Cat]元素Horse的位置:2
empty()方法
要检查堆栈是否为空,我们使用empty()方法。例如,
importjava.util.Stack;classMain{publicstaticvoidmain(String[]args){Stack<String>animals=newStack<>();//将元素添加到Stackanimals.push("Dog");animals.push("Horse");animals.push("Cat");System.out.println("Stack:"+animals);//检查堆栈是否为空booleanresult=animals.empty();System.out.println("堆栈是空的吗?"+result);}}
输出结果
Stack:[Dog,Horse,Cat]堆栈是空的吗?false
使用ArrayDeque 代替 Stack
本Stack类提供直接执行堆栈的数据结构。但是,建议不要使用它。而是使用ArrayDeque类(实现Deque接口)在Java中实现堆栈数据结构。
要了解更多信息,请访问:Java ArrayDeque
编辑于2024-05-20 14:47