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 实现,因此其也是采用数组实现,也是线程安全的。
    • 先进后出的栈结构
  • 相关阅读:
    List 集合的常用方法总结
    springboot 整合 web 项目找不到 jsp 文件
    Web 安全
    微服务开放平台接口设计
    SpringCloud Hystrix 参数
    SpringCloud Eureka 配置
    ELK 日志收集系统
    网盘搜索引擎原理
    jsPlumb.jsAPI阅读笔记(官方文档翻译)
    ionic获取ios唯一设备id的解决方案
  • 原文地址:https://www.cnblogs.com/chanshuyi/p/java_collection_05_stack.html
Copyright © 2011-2022 走看看