用java源代码学数据结构<五>: Stack 详解

2014-11-24 08:51:44 · 作者: · 浏览: 0
Stack类较为简单,它的主要基础是先进后出,注意Stack继承自Vector类,所以它的内部实现基本上都是直接调用Vector的方法,难度较小。
package java.util;  
  
  
public  
class Stack extends Vector {  
      
    //无参构造函数  
    public Stack() {  
    }  
  
    /** 
     * Pushes an item onto the top of this stack. This has exactly 
     * the same effect as: 
     * addElement(item) 
    */  
    public E push(E item) {  
        addElement(item);  
  
        return item;  
    }  
  
    /** 
     * Removes the object at the top of this stack and returns that 
     * object as the value of this function. 
     */  
    public synchronized E pop() {  
        E       obj;  
        int     len = size();  
  
        obj = peek();  
        removeElementAt(len - 1);  
  
        return obj;  
    }  
  
    /** 
     * Looks at the object at the top of this stack without removing it 
     * from the stack. 
     */  
    public synchronized E peek() {  
        int     len = size();  
  
        if (len == 0)  
            throw new EmptyStackException();  
        return elementAt(len - 1);  
    }  
  
    /** 
     * Tests if this stack is empty. 
     * 
     */  
    public boolean empty() {  
        return size() == 0;  
    }  
  
    /** 
     * Returns the 1-based position where an object is on this stack. 
     * If the object o occurs as an item in this stack, this 
     * method returns the distance from the top of the stack of the 
     * occurrence nearest the top of the stack; the topmost item on the 
     * stack is considered to be at distance 1. The equals 
     * method is used to compare o to the 
     * items in this stack. 
     */  
    public synchronized int search(Object o) {  
        int i = lastIndexOf(o);  
  
        if (i >
= 0) { return size() - i; } return -1; } /** use serialVersionUID from JDK 1.0.2 for interoperability */ private static final long serialVersionUID = 1224463164541339165L; }