美文网首页
Java集合系列之Stack

Java集合系列之Stack

作者: sofarsogoo_932d | 来源:发表于2018-04-07 18:26 被阅读0次

    继承关系

    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是线程安全的动态的可扩容的数组

    相关文章

      网友评论

          本文标题:Java集合系列之Stack

          本文链接:https://www.haomeiwen.com/subject/yvmyhftx.html