Java集合系列之Stack

继承关系

public class Stack extends Vector 

从继承关系来看,就知道Stack的数据结构也是数组

成员变量

Stack本身没有成员变量,不过它继承了Vector的成员变量

关键方法

1.构造方法

//空的构造方法
public Stack() {
}

子类构造函数默认会(隐式)调用父类的无参构造函数,它的父类是的参数构造函数,会创建一个容量为10的数组

2.其他方法

//入栈
public E push(E item) {
    addElement(item);
    return item;
}

调用vector的addElement方法,在数组尾部添加一个元素

//出栈
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);
}

每次都从数组尾部取出元素,peek只会取出末尾的元素,而pop会删除末尾的元素

//获取指定元素在栈的位置,栈顶元素的位置为1
public synchronized int search(Object o) {
    int i = lastIndexOf(o);
    if (i >= 0) {
        return size() - i;
    }
    return -1;
}

总结
Stack的代码很少,方法也就这么多,它的大部分都是调用的Vector的方法
Stack只是在Vector的基础上添加了入栈和出栈的操作,模拟了一下栈的先进后出的特点
Stack是线程安全的动态的可扩容的数组

你可能感兴趣的:(Java集合系列之Stack)