zoukankan      html  css  js  c++  java
  • Stack源码分析

    简介

    Stack是一个栈,那就满足于后进先出(FILO)。

    public class Stack<E> extends Vector<E> 
    

    该类继承自Vector,即其容器的数据类型是数据,拥有Vector的特性。在Vector源码分析有详细该类信息。


    构造函数:
    public Stack() {}
    

    常用API
                 boolean       empty()
    synchronized E             peek()
    synchronized E             pop()
                 E             push(E object)
    synchronized int           search(Object o)
    

    Stack也拥有Vector的API。


    源码分析(JDK1.8)
    		//在栈顶添加数据
        public E push(E item) {
            addElement(item);
    
            return item;
        }
    	
    		//在栈顶删除数据并返回
        public synchronized E pop() {
            E       obj;
            int     len = size();
    
            obj = peek();
          //removeElementAt在父类中有定义。
            removeElementAt(len - 1);
    
            return obj;
        }
    
    		//返回栈顶数据
        public synchronized E peek() {
          //size在父类中有定义。
            int     len = size();
    
            if (len == 0)
                throw new EmptyStackException();
            return elementAt(len - 1);
        }
    
    		//栈是否为空
        public boolean empty() {
            return size() == 0;
        }
    
    		//在栈顶往栈底查找数据o的索引
        public synchronized int search(Object o) {
          //lastIndexOf在父类中有定义。
            int i = lastIndexOf(o);
    
            if (i >= 0) {
                return size() - i;
            }
            return -1;
        }
    
        // 版本ID
        private static final long serialVersionUID = 1224463164541339165L;
    

    总结
    • Stack是一个栈,该类通过一个数据为数据结构来实现。

    • Stack继承自Vector,拥有Vector功能和属性。

  • 相关阅读:
    nuxt.js 学习与记录
    图片上传预览 接收
    k8s之deployment
    k8s之service
    k8s的一些命令
    ansible 学习
    k8s之ConfigMap && secret
    k8s 之Job/CronJob
    k8s之PV & PVC
    配置ssh免密登录
  • 原文地址:https://www.cnblogs.com/zitai/p/13092269.html
Copyright © 2011-2022 走看看