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 实现,因此其也是采用数组实现,也是线程安全的。
    • 先进后出的栈结构
  • 相关阅读:
    Android 请求运行时权限
    Android 调试技巧之快速重启生效
    ubuntu 用aptitude代替apt-get处理依赖性问题
    Learning Git by Animations
    Android调试技巧
    Android O PackageInstaller 解析
    阅读代码工具:Visual Studio Code
    Android 缓存策略demo
    |= 和 &= ~
    Android 逆向工具
  • 原文地址:https://www.cnblogs.com/chanshuyi/p/java_collection_05_stack.html
Copyright © 2011-2022 走看看