首页 > 其他分享 >Stack

Stack

时间:2024-07-13 23:19:08浏览次数:8  
标签:index obj synchronized len Stack elementCount public

  • 继承自 Vector,是线程安全的
  • 在 Java 中,推荐使用 ArrayDeque 来代替 Stack,因为 ArrayDeque 是非线程安全的,性能更好

push

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

    return item;
}
  • 调用了 Vector 类的 addElement 方法,该方法上添加了 synchronized 关键字
public synchronized void addElement(E obj) {
    modCount++;
    ensureCapacityHelper(elementCount + 1);
    elementData[elementCount++] = obj;
}

pop

public synchronized E pop() {
    E obj;
    int len = size();

    // 调用 peek 方法获取到栈顶元素
    obj = peek();
    removeElementAt(len - 1);

    return obj;
}
  • 调用 Vector 类的 removeElementAt 方法移除栈顶元素
public synchronized void removeElementAt(int index) {
    modCount++;
    if (index >= elementCount) {
        throw new ArrayIndexOutOfBoundsException(index + " >= " +
                                                 elementCount);
    }
    else if (index < 0) {
        throw new ArrayIndexOutOfBoundsException(index);
    }
    int j = elementCount - index - 1;
    if (j > 0) {
        // 如果移除的不是栈顶元素,还会调用 System.arraycopy 进行数组的拷贝,因为栈的底层是由数组实现的
        System.arraycopy(elementData, index + 1, elementData, index, j);
    }
    elementCount--;
    elementData[elementCount] = null; /* to let gc do its work */
}
public synchronized E peek() {
    int len = size();

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

标签:index,obj,synchronized,len,Stack,elementCount,public
From: https://www.cnblogs.com/sprinining/p/18300968

相关文章

  • Kolla-ansible部署openStack
    目录Kolla-ansible部署openStack1.简介2.环境准备3.部署3.1基础环境配置3.1.1配置主机名,所有节点操作,这里以openstack01为例3.1.2添加hosts3.1.3配置免密登录3.1.4关闭防火墙以及selinux3.1.5设置yum源3.1.6安装docker3.2配置kolla-ansible3.2.1安装相关依赖3.2.2部......
  • saltStack自动化工具
    目录SaltStack自动化工具核心概念1.Master和Minion2.State3.Pillar4.Grains5.Modules6.Runner7.Reactor工作流程安装和配置1.配置hosts解析2.配置yum源3.saltstack安装3.1master节点3.2minion节点4.配置saltstack4.1master节点配置4.2配置minion节点5.接受认证......
  • day10-stack&Queue-part01-7.12
    tasksfortoday:1.理论基础2.232用栈实现队列3.225用队列实现栈4.20有效的括号5.1047删除字符串中所有相邻重复项--------------------------------------------------------------------------1.理论基础stack:firstinlastout     head    ......
  • 数据结构(Java):集合类LinkedList&集合类Stack
    1、集合类LinkedList1.1什么是LinkedListLinkedList的底层是一个双向链表的结构(故不支持随机访问):在LinkedList中,定义了first和last,分别指向链表的首节点和尾结点。每个节点中有一个成员用来存储数据,还有两个指针域next和prev分别存储下一个节点和上一个节点的地址。Link......
  • docker-compose vs docker-stack
    docker-composevsdocker-stack都是docker两个容器编排工具,docker-compose是属于第三方容器编排工具需要单独安装,docker-stack是docker内置容器编排工具。docker-compose一般配合K8S使用,目前要容器管理方面K8S有着比较明显的优势,所以docker-compose目前比较流行。docker-stac......
  • 【无人机通信】Stackelberg算法无人机边缘计算抗干扰信道分配【含Matlab源码 4957期】
    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信或扫描文章底部QQ二维码。......
  • 实现openstack的部署和安装
    MirantisMirantis一家优秀的openstack服务集成商,他是社区贡献排名前5名中唯一一个靠软件和服务立足的公司(其他分别是RedHat,HP,IBM,Rackspace)。相对于其他几个社区发行版,Fuel的版本节奏很快,平均每两个月就能提供一个相对稳定的社区版。Fuel是什么?Fuel是一个......
  • Openstack服务器平台搭建手册
    PS:本片文章为摘抄文章,仅做学习和记录使用,原创作者不易,请支持原创作者!!谢谢!!原创链接:https://blog.csdn.net/lj2023103338/article/details/133999474Openstack版本:Q版本(chinaskills_cloud_iaas.iso)其他版本也可以配置需求:一台交换机(能通外网的交换机,这里不做网络的配......
  • Openstack制作Rhel9,使用IOS镜像制作
    转自作者自己的CSDN 拷贝Openstack制作Rhel9,使用IOS镜像制作_redhatopenstack如何使用iso虚机-CSDN博客====================  需要已有环境:   1.Openstack   2.qume-img,kvm,virsh....     (yuminstallqemu-kvmqemu-imgvirt-managerlibvirt......
  • 在Docker中搭建rabbit MQ集群 (Mac + OrbStack)
    我以为用docker搭建一个rabbitMq集群会非常简单,但是结果却出乎意料,我花了差不多两个半天才搞定。这还是依赖了AI的协助,否则难度不敢想象。我的环境是Mac上的OrbStack。用了Kimi+文心一言+ChatGPT+Claude,还是Kimi价值最大。backandforth的过程就不讲了,这里直接说一下......