网站导航:首页 -> JAVA认证 -> JAVA认证考试指导 -> J2SE综合:对java.util的总结 八

J2SE综合:对java.util的总结 八


  15.10.3 stack
  
  stack是vector的一个子类,它实现标准的后进先出堆栈。stack仅仅定义了创建空堆栈的默认构造函数。stack包括了由vector定义的所有方法,同时增加了几种它自己定义的方法,具体总结在表15-11中。
  
  表15-11 由stack 定义的方法
  
  方法描述
  
  boolean empty( ) 如果堆栈是空的,则返回true,当堆栈包含有元素时,返回false
  
  object peek( ) 返回位于栈顶的元素,但是并不在堆栈中删除它
  
  object pop( ) 返回位于栈顶的元素,并在进程中删除它
  
  object push(object element) 将element压入堆栈,同时也返回element
  
  int search(object element) 在堆栈中搜索element,如果发现了,则返回它相对于栈顶的偏移量。否则,返回-1
  
  调用push( )方法可将一个对象压入栈顶。调用pop( )方法可以删除和返回栈顶的元素。当调用堆栈是空的时,如果调用pop( )方法,将引发一个emptystackexception异常。调用peek( )方法返回但不删除栈顶的对象。调用empty( )方法,当堆栈中没有元素时,返回true.search( )方法确定一个对象是否存在于堆栈,并且返回将其指向栈顶所需的弹出次数。下面是一个创建堆栈的例子,在例子中,将几个整型(integer)对象压入堆栈,然后再将它们弹出。
  
  // demonstrate the stack class.
  
  import java.util.*;
  
  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 -> ');
  
  integer a = (integer) st.pop();
  
  system.out.println(a);
  
  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);
  
  showpush(st, 99);
  
  showpop(st);
  
  showpop(st);
  
  showpop(st);
  
  try {
  
  showpop(st);
  
  } catch (emptystackexception e) {
  
  system.out.println('empty stack');
  
  }
  
  }
  
  }
  
  下面是由该程序产生的输出。注意对于emptystackexception的异常处理程序是如何被捕获以便于能够从容地处理堆栈的下溢:
  
  stack: [ ]
  
  push(42)
  
  stack: [42]
  
  push(66)
  
  stack: [42, 66]
  
  push(99)
  
  stack: [42, 66, 99]
  
  pop -> 99
  
  stack: [42, 66]
  
  pop -> 66
  
  stack: [42]
  
  pop -> 42
  
  stack: [ ]
  
  pop -> empty stack
  
  15.10.4 dictionary
  
  字典(dictionary)是一个表示关键字/值存储库的抽象类,同时它的操作也很像映射(map)。给定一个关键字和值,可以将值存储到字典(dictionary)对象中。一旦这个值被存储了,就能够用它的关键字来检索它。因此,与映射一样,字典可以被当做关键字/值对列表来考虑。尽管在java 2中并没有摈弃字典(dictionary),由于它被映射(map)所取代,从而被认为是过时的。然而由于目前dictionary被广泛地使用,因此这里仍对它进行详细的讨论。
  
  由dictionary定义的抽象方法在表15-12中列出。
  
  表15-12 由dictionary 定义的抽象方法