java的stack用法
Stack有时也可以称为“后入先出”(LIFO)荟萃。换言之,我们在仓库里最后“压入”的对象将是今后第一个“弹出”的。和其他所有Java荟萃一样,我们压入和弹出的都是“工具”,所以必需对本身弹出的对象举办“造型”。
一种很少见的做法是拒绝利用Vector作为一个Stack的根基组成元素,而是从Vector里“担任”一个Stack。这样一来,它就拥有了一个Vector的所有特征及行为,别的加上一些特另外Stack行为。很难判定出设计者到底是明晰想这样做,照旧属于一种固有的设计。
下面是一个简朴的仓库示例,它能读入数组的每一行,同时将其作为字串压入仓库。
//: Stacks.java // Demonstration of Stack Class import java.util.*; public class Stacks { static String[] months = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; public static void main(String[] args) { Stack stk = new Stack(); for(int i = 0; i < months.length; i++) stk.push(months[i] + " "); System.out.println("stk = " + stk); // Treating a stack as a Vector: stk.addElement("The last line"); System.out.println( "element 5 = " + stk.elementAt(5)); System.out.println("popping elements:"); while(!stk.empty()) System.out.println(stk.pop()); } } ///:~
months数组的每一行都通过push()担任进入仓库,稍后用pop()从仓库的顶部将其取出。要声明的一点是,Vector操纵亦可针对Stack工具举办。这大概是由担任的特质抉择的——Stack“属于”一种Vector。因此,能对Vector举办的操纵亦可针对Stack举办,譬喻elementAt()要领。