【Java集合的详细研究9】Java堆栈(stack)的使用方法
来源:互联网 发布:知乎 小米 软文 编辑:程序博客网 时间:2024/05/16 05:15
栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西,而对于栈就只能每次访问它的栈顶元素,
从而可以达到保护栈顶元素以下的其他元素.”先进后出”或”后进先出”就是栈的一大特点,
先进栈的元素总是要等到后进栈的元素出栈以后才能出栈.递归就是利用到了系统栈,暂时保存临时结果,对临时结果进行保护.
栈是存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)。
栈和常量池中的对象可以共享,对于堆中的对象不可以共享。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。堆中的对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定。局部变量的数据存在于栈内存中。栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量数据(int, short, long, byte, float, double, boolean, char)和对象句柄(引用)。
堆栈是一种 “后进先出” (LIFO) 的数据结构, 只能在一端进行插入(称为 “压栈” ) 或删除 (称为“出栈”)数据的操作。
JAVA 中,使用 java.util.Stack 类的构造方法创建对象。
public class Stack extends vector
构造方法 : public Stack() 创建一个空 Stack。
方法: 1. public push (item ) 把项 压入栈顶。其作用与 addElement (item ) 相同。
参数 item 压入栈顶的项 。 返回: item 参数 ;
2. public pop () 移除栈顶对象,并作为函数的值 返回该对象。
返回:栈顶对象(Vector 对象的中的最后一项)。
抛出异常 : EmptyStackException 如果堆栈式空的 。。。
3. public peek() 查看栈顶对象而不移除它。。
返回:栈顶对象(Vector 对象的中的最后一项)。
抛出异常 : EmptyStackException 如果堆栈式空的 。。。
4. public boolean empty (测试堆栈是否为空。) 当且仅当堆栈中不含任何项时 返回 true,否则 返回 false.
5. public int search (object o) 返回对象在堆栈中位置, 以 1 为基数, 如果对象 o是栈中的一项,该方法返回距离 栈顶最近的出现位置到栈顶的距离; 栈中最上端项的距离
//栈,Vector的子类public class StackDemo { // 把元素放入栈顶 static void showpush(Stack st, int a) { st.push(new Integer(a)); System.out.println("push(" + a + ")"); System.out.println("stack: " + st); } // 从栈顶删除元素 static void showpop(Stack st) { System.out.print("pop -> "); // 判断栈是否为空 if (st.empty()) { System.out.println("Stack is empty."); } else { Integer a = (Integer) st.pop(); System.out.println(a); System.out.println("stack: " + st); } } // 查看栈顶元素 static void showpeek(Stack st) { System.out.print("peek -> "); if (st.empty()) { System.out.println("Stack is empty."); } else { Integer a = (Integer) st.peek(); System.out.println(a); System.out.println("stack: " + st); } } // 查询指定元素 static void showsearch(Stack st, int i) { System.out.print("search -> " + i); Integer index = (Integer) st.search(i); System.out.println("--index -> " + index); System.out.println("stack: " + st); } public static void main(String args[]) { Stack st = new Stack(); System.out.println("stack: " + st); showpush(st, 42); showpush(st, 66); showpeek(st); showsearch(st, 66); showsearch(st, 88); showpop(st); showpop(st); showpop(st); }}
运行结果:
stack: []
push(42)
stack: [42]
push(66)
stack: [42, 66]
peek -> 66
stack: [42, 66]
search -> 66--index -> 1
stack: [42, 66]
search -> 88--index -> -1
stack: [42, 66]
pop -> 66
stack: [42]
pop -> 42
stack: []
pop -> Stack is empty.
- 【Java集合的详细研究9】Java堆栈(stack)的使用方法
- 【Java集合的详细研究9】Java堆栈(stack)的使用方法
- 【Java集合的详细研究9】Java堆栈(stack)的使用方法
- java堆栈类使用实例(java中stack的使用方法
- java堆栈类使用实例(java中stack的使用方法)
- java堆栈类使用实例(java中stack的使用方法)
- java堆栈类使用实例(java中stack的使用方法)
- java 堆栈的使用方法说明
- 【Java集合的详细研究3】Arrays类常用方法
- 【Java集合的详细研究3】Arrays类常用方法
- Java集合(stack)
- java 日志的使用方法 (详细)
- 求解java中堆栈的详细解释
- Java集合---Stack的源码分析
- java stack的详细实现分析
- java stack的详细实现分析
- java stack的详细实现分析
- Java中堆(heap)和堆栈(stack)的区别
- 百度地图显示灰白格
- php 二维数组整理成以某个值为key值的整理
- ibatis运行的SQL语句的输出——通过配置log4j
- sql语句之表创建操作
- [转]EasyPlayer Android声音自动停止、恢复,一键静音等功能
- 【Java集合的详细研究9】Java堆栈(stack)的使用方法
- NC portal获取按钮控件,控制其显示与隐藏
- 安卓N版本NuPlayer向服务端发送RTSP请求
- 【九度OJ】题目1109:连通图 解题报告
- flume hbase sink配置
- 汪国新向媒体介绍宜昌“大义文化”
- jQuery Tooltip
- SpringMVC——接收请求参数和页面传参
- 用Qt写软件系列四:定制个性化系统托盘菜单