Stack 有时也可以称为 "后入先出"(LIFO) 集合. 换言之, 我们在堆栈里最后 "压入" 的东西将是以后第
一个 "弹出" 的. 和其他所有 Java 集合一样, 我们压入和弹出的都是 "对象", 所以必须对自己弹出的东西
进行 "造型".
- String[] months = { "January", "February", "March", "April", "May", "June", "July", "August", "September",
- "October", "November", "December" };
- Stack stk = new Stack();
- for(int i=0;i<months.length;i++){
- stk.push(months[i]);
- }
- for(int i=0;i<stk.size();i++){
- System.out.println(stk.pop());
- }
Stack 的长度是 12, 但是控制台并没有把所有元素输出出来, 这是为什么呢?
- December
- November
- October
- September
- August
- July
因为 stk.pop() 会移除堆栈顶部的对象. 故 stk.size() 会递减, 而 i 变量在递增. 所以只取到一半 i<stk.size() 就不满足条件了
如果换成 months.length 那么 stk 的所有元素都会弹出冰输出出来了
- System.out.println(stk.empty());// 是否为空
- System.out.println(stk.peek());// 弹出顶端元素但是不删除
- System.out.println(stk.contains("February"));// 查找一个对象是否在堆栈中存在
- System.out.println(stk.elementAt(6));// 输出指定位置的元素
- System.out.println(stk.lastIndexOf("April"));// 查找一个对象是否在堆栈中的位置
- stk.sort(null);// 对元素进行排序, 如果不指定则按照 Z-A 排序
来源: http://www.bubuko.com/infodetail-2726996.html