zoukankan      html  css  js  c++  java
  • 集合系列 List(五):Stack

    Stack 是先进后出的栈结构,其并不直接实现具体的逻辑,而是通过继承 Vector 类,调用 Vector 类的方法实现。

    public
    class Stack<E> extends Vector<E>
    

    核心方法

    Stack 类代码非常简单,其有 3 个核心方法:push、pop、peek。

    push

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

    可以看到 push 方法直接调用 Vector 的 addElement 方法将元素插入数组尾部。

    pop

    public synchronized E pop() {
        E       obj;
        int     len = size();
    
        obj = peek();
        removeElementAt(len - 1);
    
        return obj;
    }
    

    pop 方法调用 Vector 的 removeElementAt 方法,删除了一个元素。要注意的是,其删除的是数组最后一个元素,而不是第一个元素。

    peek

    public synchronized E peek() {
        int     len = size();
    
        if (len == 0)
            throw new EmptyStackException();
        return elementAt(len - 1);
    }
    

    peek 方法直接返回列表最后一个元素。

    总结

    Stack 方法代码真的是非常简单,其利用 Vector 实现了一个线程安全的栈结构。总的来说,其有以下特点:

    • 底层采用 Vector 实现,因此其也是采用数组实现,也是线程安全的。
    • 先进后出的栈结构
  • 相关阅读:
    String为值类型还是引用类型
    Mat数据类型
    各数据类型取值范围和所占字节数
    opencv matType
    python函数参数中冒号与箭头
    批量删除list中元素的方法
    PyQt QListview和QListWidgt
    函数形参中的冒号与箭头
    CSS选择器之相邻兄弟选择器
    CSS选择器之子元素选择器
  • 原文地址:https://www.cnblogs.com/chanshuyi/p/java_collection_05_stack.html
Copyright © 2011-2022 走看看