91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中棧怎么用

發布時間:2020-10-10 18:35:58 來源:億速云 閱讀:115 作者:小新 欄目:編程語言

小編給大家分享一下Java中棧怎么用,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

Java中的Stack是早期的遺留類,Sun/Oracle已經不推薦使用,現在只是為了兼容遺留代碼而保留.

遺留實現

如下面的代碼所示,java.util.Stack中的實現是基于動態數組實現的,而Vector同樣是一個被廢棄的類。

個人看來,這個實現有兩個問題

基于Vector,需要同步因而性能損失很嚴重

基于數組而非鏈表,棧很大時需要多次擴容,帶來不必要的性能損失

public
class Stack<E> extends Vector<E> {
    /**
     * Creates an empty Stack.
     */
    public Stack() {
    }

    public E push(E item) {
        addElement(item);

        return item;
    }

    public synchronized E pop() {
        E       obj;
        int     len = size();

        obj = peek();
        removeElementAt(len - 1);

        return obj;
    }

    public synchronized E peek() {
        int     len = size();

        if (len == 0)
            throw new EmptyStackException();
        return elementAt(len - 1);
    }


    public boolean empty() {
        return size() == 0;
    }


    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;
}

自己簡單的封裝

下面是基于LinkedList封裝的Stack

這里的棧是一個裝飾器。

import java.util.LinkedList;
import java.util.NoSuchElementException;

public class Stack<T> {
    private LinkedList<T> stack;

    Stack() {
        stack = new LinkedList<>();
    }

    public void push(T o) {
        stack.add(o);
    }

    public T pop() {
        if (size() <= 0) {
            throw new NoSuchElementException("Stack is Empty.");
        }
        return stack.removeLast();
    }

    public T peek() {
        if (size() <= 0) {
            throw new NoSuchElementException("Stack is Empty.");
        }
        return stack.getLast();
    }

    public boolean empty() {
        return stack.size() == 0;
    }

    public int size() {
        return stack.size();
    }
}

看完了這篇文章,相信你對Java中棧怎么用有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杂多县| 炎陵县| 普格县| 宜宾市| 攀枝花市| 鄱阳县| 兴和县| 通渭县| 忻城县| 乌鲁木齐县| 尖扎县| 衡东县| 仪陇县| 临汾市| 大田县| 阳西县| 东兰县| 新安县| 盐边县| 那坡县| 巴东县| 株洲县| 浮梁县| 通辽市| 敦化市| 通榆县| 克什克腾旗| 友谊县| 六枝特区| 山东省| 怀安县| 大关县| 钟山县| 黎平县| 清丰县| 安徽省| 漾濞| 嘉兴市| 都江堰市| 长乐市| 绥阳县|