出典:
免責事項:私が誰かの権利を侵害した場合は、私に連絡してください。削除します。
専門家を歓迎して私にスプレーしてください。
記事のディレクトリ
継承
スタックは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;
}