zoukankan      html  css  js  c++  java
  • 集合框架系列List (四):Stack源码分析

    目录

    1 概述

    2 源码分析

    1 概述

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

    public
    class Stack<E> extends Vector<E>

    2 源码分析

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

    2.1 push

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

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

    2.2 pop

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

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

    2.3 peek

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

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

    总结

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

    • 底层采用 Vector 实现,因此其也是采用数组实现,也是线程安全的。
    • 先进后出的栈结构

    0

  • 相关阅读:
    SDOI2008]仪仗队
    洛谷P1414 又是毕业季II
    P3865 【模板】ST表
    [HAOI2007]理想的正方形
    noip 2011 选择客栈
    [AHOI2009]中国象棋
    洛谷P3387 【模板】缩点
    [SCOI2005]最大子矩阵
    [CQOI2009]叶子的染色
    LibreOJ #116. 有源汇有上下界最大流
  • 原文地址:https://www.cnblogs.com/youngao/p/12517850.html
Copyright © 2011-2022 走看看