栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA源码学习之集合-Stack

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA源码学习之集合-Stack

目录

前言

正文

类的api描述

方法


前言

根据前面的ArrayList发现,Vector下面还有一个Stack,这个原来的时候我完全没有注意,这个次让我们一起来揭开这个类的神秘面纱。

正文

类的api描述
  • public class Stack
    extends VectorVector
    Stack类代表一个方法暗含(LIFO)堆栈的对象。扩展类 Vector 5操作,允许一个向量被视为一个堆栈。通常 push pop操作提供,以及方法 peek在项堆栈顶部,一个方法来测试是否 empty堆栈,和一个项目的方法 search堆栈和发现从顶部有多远。

    当堆栈是第一次创建时,它不包含任何物品。

    更完整和一致的后进先出栈操作由Deque提供接口及其实现,应该优先使用这个类。例如  Deque stack = new ArrayDeque()

  看到这里我有了自己的猜测。Stack是继承之Vector来实现的线程安全的堆栈

构造方法
//创建一个空的stack
public Stack() {
}

//他调用了Vector的默认构造方法, 生成了默认容量为10,增量是0的数组,具体请回顾上一章
 public Vector() {
        this(10);
    }
方法
 //添加元素,调用addElement, 栈顶添加
 public E push(E item) {
        addElement(item);

        return item;
    }

    //删除这个堆栈的顶部的对象,并返回该对象的值函数。 
    public synchronized E pop() {
        E       obj;
        int     len = size();

        obj = peek();
        removeElementAt(len - 1);

        return obj;
    }

   //获取这个堆栈的顶部的对象,没有从堆栈中删除它。
    public synchronized E peek() {
        int     len = size();

        if (len == 0)
            throw new EmptyStackException();
        return elementAt(len - 1);
    }

    
    //判断堆栈是否为空
    public boolean empty() {
        return size() == 0;
    }

  //Vector类,返回数组中存在元素的数量
  public synchronized int size() {
        return elementCount;
    }


    //根据当前对象,从栈顶位置往下的第一个元素的位置
    public synchronized int search(Object o) {
        //因为栈顶为数组的尾部,所以使用lastIndexOf, 来找数组当前对象最后的下标
        int i = lastIndexOf(o);

        if (i >= 0) {
            return size() - i;
        }
        return -1;
    }

上一章

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号