Java集合系列之Stack

继承关系

public class Stack<E> extends Vector<E> 

从继承关系来看,就知道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是线程安全的动态的可扩容的数组

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容