集合包系列四 —— Stack

本系列文章所描述的所有类或接口都是基于 JDK 1.7的源码,在其它 JDK 的实现方式中可能会有所不同。

一、实现方式

Stack 继承于 Vector,在此基础上实现了 Stack 所要求的后进先出(LIFO)的弹出及压入操作,其提供了 push、pop、peek三个主要的方法。

二、push(E)

push 操作通过调用 Vector 中的 addElement 来完成。

    public E push(E item) {
        addElement(item);

        return item;
    }

    public synchronized void addElement(E obj) {
        modCount++;
        ensureCapacityHelper(elementCount + 1);
        elementData[elementCount++] = obj;
    }

三、pop()

pop 操作通过调用 peek 来获取元素,并同时删除数组的最后一个元素。

    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()

peek 操作通过获取当前 Object 数组的大小,并获取数组上的最后一个元素。

五、注意要点

对于 Stack 而言,要注意的只有一点:
  Stack 基于 Vector 实现,支持 LIFO。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容