資料結構——Java Stack 類

來源:互聯網
上載者:User

標籤:and   public   oob   opera   點擊   deque   download   簡單   info   

定義    

棧是Vector的一個子類,它實現了一個標準的後進先出的棧。堆棧只定義了預設建構函式,用來建立一個空棧。 堆棧除了包括由Vector定義的所有方法,也定義了自己的一些方法。

 

圖例            

在下面圖片中可以看到進棧(push)和出棧(pop)的過程。簡單來說,棧只有一個入口(出口),所以先進後出(後進先出)就不難理解。

 

常用方法              

序號 方法名 描述
1 Object push() 把項壓入堆棧頂部
2 Object pop() 移除堆棧頂部的對象,並作為此函數的值返回該對象
3 Object peek() 查看堆棧頂部的對象,但不從堆棧中移除它。
4 boolean empty() 測試堆棧是否為空白。
5 int search() 返回對象在堆棧中的位置,以 1 為基數。

 

源碼

package java.util;/** * The <code>Stack</code> class represents a last-in-first-out * (LIFO) stack of objects. It extends class <tt>Vector</tt> with five * operations that allow a vector to be treated as a stack. The usual * <tt>push</tt> and <tt>pop</tt> operations are provided, as well as a * method to <tt>peek</tt> at the top item on the stack, a method to test * for whether the stack is <tt>empty</tt>, and a method to <tt>search</tt> * the stack for an item and discover how far it is from the top. * <p> * When a stack is first created, it contains no items. * * <p>A more complete and consistent set of LIFO stack operations is * provided by the {@link Deque} interface and its implementations, which * should be used in preference to this class.  For example: * <pre>   {@code *   Deque<Integer> stack = new ArrayDeque<Integer>();}</pre> * * @author  Jonathan Payne * @since   JDK1.0 */publicclass Stack<E> extends Vector<E> {    /**     * Creates an empty Stack.     */    public Stack() {    }    /**     * Pushes an item onto the top of this stack. This has exactly     * the same effect as:     * <blockquote><pre>     * addElement(item)</pre></blockquote>     *     * @param   item   the item to be pushed onto this stack.     * @return  the <code>item</code> argument.     * @see     java.util.Vector#addElement     */    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.     *     * @return  The object at the top of this stack (the last item     *          of the <tt>Vector</tt> object).     * @throws  EmptyStackException  if this stack is empty.     */    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.     *     * @return  the object at the top of this stack (the last item     *          of the <tt>Vector</tt> object).     * @throws  EmptyStackException  if this stack is empty.     */    public synchronized E peek() {        int     len = size();        if (len == 0)            throw new EmptyStackException();        return elementAt(len - 1);    }    /**     * Tests if this stack is empty.     *     * @return  <code>true</code> if and only if this stack contains     *          no items; <code>false</code> otherwise.     */    public boolean empty() {        return size() == 0;    }    /**     * Returns the 1-based position where an object is on this stack.     * If the object <tt>o</tt> 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 <tt>1</tt>. The <tt>equals</tt>     * method is used to compare <tt>o</tt> to the     * items in this stack.     *     * @param   o   the desired object.     * @return  the 1-based position from the top of the stack where     *          the object is located; the return value <code>-1</code>     *          indicates that the object is not on the 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;}
View Code

 以上源碼摘自jdk1.8,如需下載jdk1.8官方文檔請點擊這裡。

 

 

參考:http://www.runoob.com/java/java-stack-class.html  https://www.cnblogs.com/leefreeman/archive/2013/05/16/3082400.html

 

資料結構——Java Stack 類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.