Stack源码解析

简介

Stack是一个先进先出(LIFO)的队列。通过五个操作扩展了Vector类,所以能被当作栈对待。
分别是,push、pop、peek、empty、search。

类继承关系

在这里插入图片描述

方法

//构造一个空对象
public Stack() {
}
//入栈
public E push(E item) {
    addElement(item);

    return item;
}
//出栈
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);
}
//判断是否为空
public boolean empty() {
    return size() == 0;
}
//查找最后一位匹配的数据
public synchronized int search(Object o) {
    int i = lastIndexOf(o);

    if (i >= 0) {
        return size() - i;
    }
    return -1;
}

可以看到方法具体实现调用Vector对象方法实现。

原文地址:https://www.cnblogs.com/paper-man/p/13284627.html