服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

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()方法。

扫描关注微信公众号