中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

大厂| 左贡县| 禹城市| 大同市| 项城市| 阿克苏市| 尖扎县| 武山县| 曲靖市| 西安市| 内黄县| 巴林左旗| 佛学| 房产| 稷山县| 宣恩县| 交口县| 桃江县| 沾益县| 合作市| 连云港市| 镇坪县| 盐池县| 商河县| 六盘水市| 临潭县| 丘北县| 康马县| 兴仁县| 通渭县| 崇左市| 应用必备| 耿马| 惠安县| 保康县| 依兰县| 循化| 南投县| 琼中| 佛山市| 长白|