JavaでのDequeの簡単な操作

出典:
免責事項:私が誰かの権利を侵害した場合は、私に連絡してください。削除します。
専門家を歓迎して私にスプレーしてください。

継承

スタックはVector(ベクターキュー)から継承します。Vectorは配列を介して実装されるため、これは、スタックもリンクリストではなく配列を介して実装されることを意味します。
Vectorはスレッドセーフであるため、ここではスタックもスレッドセーフです。

これが引用です

java.lang.Object
↳     java.util.AbstractCollection<E>
   ↳     java.util.AbstractList<E>
       ↳     java.util.Vector<E>
           ↳     java.util.Stack<E>
public class Stack<E> extends Vector<E> {}

継承図

ここに画像の説明を挿入

API関数

ここに画像の説明を挿入

コンストラクターは空のスタックを作成します

public Stack(){ }

push()は、アイテムをこのスタックの一番上にプッシュします。これは、次の効果とまったく同じです。addElement(item)

public E push(E item) {
        addElement(item); 
        return item;
    }
ベクトルのaddElementは同期メソッドです
    public synchronized void addElement(E obj) {
        modCount++;
        ensureCapacityHelper(elementCount + 1);
        elementData[elementCount++] = obj;
    }

pop()は、このスタックの最上位にあるオブジェクトを削除し、同期されたメソッドであるこの関数の値としてオブジェクトを返します。

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

emptyはスタックが空です

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

スタック内の「要素o」の位置を見つけます。スタックの一番下から一番上まで同期されたメソッドを数えます。

    public synchronized int search(Object o) {
        int i = lastIndexOf(o);

        if (i >= 0) {
            return size() - i;
        }
        return -1;
    }

おすすめ

転載: blog.csdn.net/qq_45531729/article/details/111996482