`
liuzhaomin
  • 浏览: 204286 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Stack

JDK 
阅读更多

Stack基于Vector实现,支持LIFO。实际上栈是一种抽象数据类型。

 

public
class Stack<E> extends Vector<E> {
    /**
     * Creates an empty Stack.
     */
    public Stack() {
    }

    /**
     * Pushes an item onto the top of this stack. This has exactly
     * the same effect as:
     * <blockquote><pre>
     * addElement(item)</pre></blockquote>
     *
     * @param   item   the item to be pushed onto this stack.
     * @return  the <code>item</code> argument.
     * @see     java.util.Vector#addElement
     */
    public E push(E item) {
	addElement(item);

	return item;
    }

    /**
     * Removes the object at the top of this stack and returns that
     * object as the value of this function.
     *
     * @return     The object at the top of this stack (the last item
     *             of the <tt>Vector</tt> object).
     * @exception  EmptyStackException  if this stack is empty.
     */
    public synchronized E pop() {
	E	obj;
	int	len = size();

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

	return obj;
    }

    /**
     * Looks at the object at the top of this stack without removing it
     * from the stack.
     *
     * @return     the object at the top of this stack (the last item
     *             of the <tt>Vector</tt> object).
     * @exception  EmptyStackException  if this stack is empty.
     */
    public synchronized E peek() {
	int	len = size();

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

    /**
     * Tests if this stack is empty.
     *
     * @return  <code>true</code> if and only if this stack contains
     *          no items; <code>false</code> otherwise.
     */
    public boolean empty() {
	return size() == 0;
    }

    /**
     * Returns the 1-based position where an object is on this stack.
     * If the object <tt>o</tt> occurs as an item in this stack, this
     * method returns the distance from the top of the stack of the
     * occurrence nearest the top of the stack; the topmost item on the
     * stack is considered to be at distance <tt>1</tt>. The <tt>equals</tt>
     * method is used to compare <tt>o</tt> to the
     * items in this stack.
     *
     * @param   o   the desired object.
     * @return  the 1-based position from the top of the stack where
     *          the object is located; the return value <code>-1</code>
     *          indicates that the object is not on the stack.
     */
    public synchronized int search(Object o) {
	int i = lastIndexOf(o);

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

    /** use serialVersionUID from JDK 1.0.2 for interoperability */
    private static final long serialVersionUID = 1224463164541339165L;
}

 

 

分享到:
评论

相关推荐

    STACK1_SEGMENT_STACK.rar_STACK1 SEGMENT_stack segment stack

    在汇编语言的学习中,"STACK1_SEGMENT_STACK.rar_STACK1 SEGMENT_stack segment stack"这个标题提到了两个关键概念:栈段(Stack Segment)和栈(Stack)。栈在计算机科学中扮演着至关重要的角色,尤其是在汇编语言...

    Z-Stack 3.0.2-.7z.zip_Z-STACK 3.0.2_Z-STACK-3.0.2_z-stack 3_z-st

    Z-Stack 3.0.2 是一个专为物联网(IoT)设计的网络协议栈,它由Zigbee联盟开发并广泛应用于智能家居、智能能源、工业自动化等领域。Zigbee是一种低功耗、低成本、自组织的无线通信技术,支持多跳网络,能构建大规模...

    Haskell入门:用stack搭建haskell编译环境

    stack官方网站: https://docs.haskellstack.org/en/stable/README/ 首先: 在终端下键入下面这条命令: curl -sSL https://get.haskellstack.org/ | sh 出现以下情况: 在终端下输入命令: sudo apt install curl...

    redis-stack-server 7.2.0 安装包合集

    redis-stack-server-7.2.0-v9.arm64.snap redis-stack-server-7.2.0-v9.bionic.arm64.tar.gz redis-stack-server-7.2.0-v9.bionic.x86_64.tar.gz redis-stack-server-7.2.0-v9.bullseye.x86_64.tar.gz redis-stack-...

    StackDocklet.zip

    StackDocklet是一款面向开发者和IT专业人士的工具,它允许用户在桌面上创建一个浮动的快捷方式堆栈,方便地管理和启动常用的应用程序、文件或目录。这个压缩包“StackDocklet.zip”包含了StackDocklet的主要组件和...

    C语言头文件 STACK

    C语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 ...

    基于Z-Stack的点对点通信_zigbeecc2530_z-stack_

    Z-Stack是TI(德州仪器)开发的一套完整的Zigbee协议栈,它为开发者提供了构建Zigbee网络的基础。本文将深入探讨基于Z-Stack的点对点通信,以及如何在CC2530微控制器上实现这一通信模式。 CC2530是TI公司设计的一款...

    Z-Stack 3.0.2.zip

    Z-Stack 3.0.2是Texas Instruments(TI)发布的一个重要的无线网络协议栈,专为Zigbee通信协议设计。Zigbee是一种低功耗、短距离、自组织的无线网络技术,广泛应用于智能家居、工业自动化、智能电网等领域。Z-Stack...

    Z-Stack 3.0 开发者中文手册.pdf

    Z-Stack 3.0是德州仪器(Texas Instruments,简称TI)提供的一个ZigBee协议栈,它是一个无线通讯技术,用于创建低功耗局域网。ZigBee协议栈基于IEEE 802.15.4标准,用于满足低数据速率、低功耗、短距离的无线通讯...

    girdDiv拖拽gridstack-4.2.5

    "girdDiv拖拽gridstack-4.2.5"是一个专为实现这种功能的库,它允许用户通过鼠标拖放操作来调整div元素的位置和大小,从而提供了一种灵活的网格布局解决方案。这个库主要基于jQuery和JavaScript技术,使得开发者能够...

    FSL_LIN_2.X_STACK.zip_FSL_LIN_2.X_STACK_LIN代码_NXP LIN_lin 2.2_li

    《NXP LIN 2.2 Stack:构建与理解》 NXP LIN 2.2 Stack 是一种基于Freescale Semiconductor(现为NXP Semiconductors)技术的 LIN(Local Interconnect Network)通信协议栈,它专为汽车电子系统中的低速通信设计。...

    android ndk-stack使用说明。

    ### Android NDK-Stack 使用说明 #### 一、概述 在使用Cocos2d-x、JNI及Android NDK进行开发时,经常会遇到调试困难的问题。尤其是对于C/C++代码的调试,由于涉及到本地代码与Java层之间的交互,使得调试过程变得...

    ELK Stack权威指南 第2版

    ELKstack是Elasticsearch、Logstash、Kibana三个开源软件的组合,是目前开源界流行的实时数据分析方案,成为实时日志处理领域开源界的选择。然而,ELKstack也并不是实时数据分析界的灵丹妙药,使用不恰当,反而会...

    bacnet-stack-0.8.0

    Bacnet-stack-0.8.0 是一个针对BACnet协议的开源实现,适用于各种嵌入式设备。这个版本的堆栈(stack)是0.8.0,它旨在为不同平台提供支持,包括Linux、Windows 32位系统、PIC微控制器以及ARM7架构的处理器。BACnet...

    Z-Stack_Lighting_1_0_2

    Z-Stack_Lighting_1_0_2 是TI(德州仪器)推出的一个针对CC2530微控制器的ZigBee协议栈软件版本。ZigBee是一种基于IEEE 802.15.4标准的低功耗、短距离无线通信技术,广泛应用于智能家居、智能照明、传感器网络等领域...

    华为云Stack8.1产品彩页V1.1.pdf

    "华为云Stack 8.1 产品彩页 V1.1" 华为云Stack 8.1 是一款基于云计算技术的解决方案,旨在为政府和企业提供智能升级的 Cloud Office 平台。该解决方案基于鲲鹏处理器,提供云办公服务,云桌面服务,云应用服务等...

    Z-Stack 3.0.2 和 2.5.1协议栈

    Z-Stack是TI公司开发的一款专门用于Zigbee网络的软件协议栈,它为开发者提供了构建无线传感器网络和物联网应用的基础。Zigbee是一种低功耗、低成本、自组织的无线通信技术,常用于智能家居、工业自动化、智能照明等...

Global site tag (gtag.js) - Google Analytics