栈的特点:
1.栈(Stack)实现了一个后进先出(LIFO)的数据结构。只能在一端进行插入(称为"压栈") 或删除 (称为"出栈")数据的操作。当你从栈中取元素的时候,就从栈顶取一个元素。也就是,最后进栈的元素最先被取出。不是也有先进先出的数据结构局吗?有,但是这个Stack是实现了先进后出!
2.栈是Vector的子类。 public class Stack extends vector
3.栈只定义了默认构造函数:Stack(),用来创建一个空栈。 栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。
序号 | 方法描述 |
---|---|
1 | boolean empty() 测试栈是否为空。 |
2 | Object peek( ) 查看栈顶部的对象,但不从堆栈中移除它。 |
3 | Object pop( ) 查看顶部对象,并移除栈顶部的对象,并作为此函数的值返回该对象。 |
4 | Object push(Object element) 把项压入栈顶部。 |
5 | int search(Object element) 返回对象在栈中的位置,以 1 为基数。 |
注:注意上面的peek()方法和pop()方法的区别!
实例
下面的程序说明这个集合所支持的几种方法
- import java.util.Stack;
-
- public class StackTest {
- public static void main(String[] args) {
- Stack<String> stack = new Stack<String>();
- System.out.println("now the stack is " + isEmpty(stack));
- stack.push("1");
- stack.push("2");
- stack.push("3");
- stack.push("4");
- stack.push("5");
- System.out.println("now the stack is " + isEmpty(stack));
- System.out.println(stack.peek());
- System.out.println(stack.pop());
- System.out.println(stack.pop());
- System.out.println(stack.search("2"));
- }
- public static String isEmpty(Stack<String> stack) {
- return stack.empty() ? "empty" : "not empty";
- }
- }
输出为:
- now the stack is not empty
- 5
- 5
- 4
- 2