Java中栈的简单操作

SAP S/4HANA BP主数据-CVI模型 SAP BP主数据介绍 ECC系统中的客户、供应商主数据的限制: •一个客户或供应商仅能有一个地址 •客户和供应商没有关联关系(同一个实体公司) •如果一家公司既是供应商也是客户需建立两个主数据(数据冗余) •属性无时间相关性 S4系统中BP优点: •一个BP可以扮演多个角色(个人,客户,供应商)且角色之间数据共享 •时间相关的属性 •统一的数据架构,无数据冗余 •CVI模型可以确保BP和客户/供应商数据同步 SAP BP主数据配置 •配置BP角色/角色类别 •配置BP角. 阅读详情
Java中栈的简单操作

栈是Java语言中最重要的数据结构之一,它的实现,至少应该包括以下几个方法:

  1. pop() 出栈操作,弹出栈顶元素。
  2. push(E e) 入栈操作
  3. peek() 查看栈顶元素
  4. isEmpty() 栈是否为空

另外,实现一个栈,还应该考虑到几个问题:

  1. 栈的初始大小以及栈满以后如何新增栈空间
  2. 对栈进行更新时需要进行同步

简单示例,使用数组实现栈,代码如下:

public class Stack<E> {  

    // Java 不支持泛型数组,如需使用,请使用Java提供的容器  
    private Object[] stack;  

    // 栈的默认初始大小  
    private static final int INIT_SIZE = 2;  

    // 栈顶索引  
    private int index;  

    public Stack() {  
        stack = new Object[INIT_SIZE];  
        index = -1;  
    }  

    /**  
     * 构造方法  
     *   
     * @param initSize  
     *            栈的初始大小  
     */ 
    public Stack(int initSize) {  
        if (initSize < 0) {  
            throw new IllegalArgumentException();  
        }  
        stack = new Object[initSize];  
        index = -1; //注意此处index = -1,对实现push,pop和peek操作的作用
      }  

    /**  
     * 出栈操作  
     *   
     * @return 栈顶对象  
     */ 
    public synchronized E pop() {  
        if (!isEmpty()) {  
            E temp = peek();  
            stack[index--] = null;  
            return temp;  
        }  
        return null;  
    }  

    /**  
     * 入栈操作  
     *   
     * @param obj  
     *            等待入栈的对象  
     */ 
    public synchronized void push(E obj) {  
        if (isFull()) {  
            Object[] temp = stack;  
            // 如果栈满,则创建空间为当前栈空间两倍的栈  
            stack = new Object[2 * stack.length];  
            System.arraycopy(temp, 0, stack, 0, temp.length);  
        }  
        stack[++index] = obj;  
    }  

    /**  
     * 查看栈顶对象  
     *   
     * @return 栈顶对象  
     */ 
    public E peek() {  
        if (!isEmpty()) {  
            return (E) stack[index];  
        }  
        return null;  
    }  

    /**  
     * 查看栈是否为空  
     *   
     * @return 如果栈为空返回true,否则返回false  
     */ 
    public boolean isEmpty() {  
        return index == -1;  
    }  

    /**  
     * 查看栈是否满  
     *   
     * @return 如果栈满返回true,否则返回false  
     */ 
    public boolean isFull() {  
        return index >= stack.length - 1;  
    }  
}  

最后说明,Java中实现了栈(java.util.Stack)的数据结构,它是通过继承Vector类实现的,一般情况下我们直接拿来用就行了。

本文来源于http://developer.51cto.com/art/201205/336604.htm

3D医学影像开发入门<一>:VS2019+DCMTK3.6.8编译及环境配置 3D医学影像开发入门:VS2019+DCMTK3.6.8编译及环境配置 阅读详情

相关推荐

【ISAR成像定标方法(1)—转台目标的RD成像算法MATLAB仿真】

ISAR成像定标方法的研究具有重要意义,但是与之相关的学习资料以及仿真对于小白来说很难找或者很杂乱,本人作为小白之一在研究过程中苦不堪言,现在自己所要研究的定标内容已经完成,以后还学不学雷达也不一定,因为后面的路更难,现在打算把一些相关推导和仿真结果列出来,以供小白交流学习使用,希望能有点帮助。(PS:由于公式和符号的原因,采用图片形式说明)

此木旧年的博客 6418

[Java]栈的详解及基础操作

栈作为一种线性的数据结构同时拥有链表的许多特征,由于栈的底部逻辑是线性表,所以我们可以将其看做一个只有一边能进一边能出的数组。栈的特性为固定一端进行入栈操作和出栈操作,在可以入栈和出栈的一端,我们称之为栈顶,另一端不能进不能出的我们称之为栈底。栈是一种线性数据结构,虚拟栈是内存分配时需要在内存开辟的空间,栈帧则是内存空间开辟后的单块小内存空间。从图中我们可以清楚的看到栈的出入规律,最先进去的元素却后出栈,我们可以称之为后进先出。栈的操作包括创建,入栈出栈,获取栈顶元素等,接下来我会用代码来挨个演示。

sjhdaj的博客 1488

Arch Linux双系统安装避坑指南:从Windows分区到桌面环境全流程

本文提供了一份详尽的Arch Linux与Windows双系统安装避坑指南。内容涵盖从安装前的UEFI环境确认、BitLocker处理、分区规划,到Live环境进入、基础系统安装、GRUB引导配置,再到显卡驱动安装、KDE/GNOME桌面环境部署及中文化设置的全流程。重点解决了双系统安装中的核心痛点,帮助用户在不破坏现有Windows系统的前提下,顺利完成Arch Linux的安装。

nice1的博客 535

JAVA——栈的基本用法

文章目录 一、基本介绍 栈:(先进后出) 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈: 栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈: 栈的删除操作叫做出栈。出数据在栈顶。 二、栈自带的基本操作 向栈中存放元素:stack.push(); 获取栈顶元素:stack.peek(); 删除栈顶元素(返回值为删除的元素):stack

SwitchD的博客 6977

基于虚拟阻抗重塑的构网型VSG变流器SISO序阻抗建模与宽频振荡抑制策略分析(面向高比例新能源并网场景)

本文深入探讨了基于虚拟阻抗控制的构网型VSG变流器SISO序阻抗建模技术及其在高比例新能源并网场景中的宽频振荡抑制策略。通过虚拟阻抗重塑,有效改善了变流器的阻抗特性,解决了次/超同步频段的振荡问题,并提供了参数设计、阻抗扫频验证等实用技巧,为新能源并网系统的稳定性提供了可靠解决方案。

weixin_29268385的博客 251

用C#完成最小二乘法拟合平面方程,再计算点到面的距离

【代码】用C#完成最小二乘法拟合平面方程,再计算点到面的距离。

MechMaster 647

Deque实现Stack

Stack只有入栈和出栈的操作: 把元素压栈:push(E); 把栈顶的元素“弹出”:pop(E); 取栈顶元素但不弹出:peek(E)。 在Java中,我们用Deque可以实现Stack的功能: 把元素压栈:push(E)/addFirst(E); 把栈顶的元素“弹出”:pop(E)/removeFirst(); 取栈顶元素但不弹出:peek(E)/peekFirst()。 为什么Java的集合类没有单独的Stack接口呢?因为有个遗留类名字就叫Stack,出于兼容性考虑,所以没办法创建Stack接

code_java_zqy 1629

自制温湿度计——STM32-L432KC驱动lcd1602和dht11温湿度显示

先给大家甩一张图片哈(附上网址)简单说一下这块板子在这个小项目里的小缺点:一、引脚有点少,lcd1602本来有两种传输数据方式,一种是4bit,另一种是8bit,但是这块板子对于这个项目来说引脚有点少,所以建议用4bit模式。然而,在网上是很难找到设置4bit传输模式的lcd1602的,这也是为什么我写这个blog。二、mbed-os有时候会有大大小小的问题,搞人心态是真的。比如库函数离奇失踪,从官网上下载库函数失败,重装也解决不了然后莫名其妙好了。

m0_72994251的博客 3913

深入理解Java中的栈(超详细)新手必看

栈(Stack)是一种常见的数据结构,具有后进先出(LIFO,Last In First Out)的特性,即最后入栈的元素最先出栈。栈通常用于存储临时性的数据,如方法调用过程中的局部变量、操作数栈等。在计算机科学中,栈的应用非常广泛,包括编程语言中的函数调用、内存分配以及表达式求值等领域。在Java编程语言中,栈也被广泛应用于方法调用和内存管理的过程中。双端栈(Double Ended Stack),也被称为双端队列(Deque),是一种支持在两端进行插入和删除操作的数据结构。

2201_75437633的博客 2万+

STC8G1K08A的10位PWM避坑指南:为什么你的占空比调节总失效?(附寄存器操作时序图)

本文深入剖析了STC8G1K08A单片机10位PWM功能中占空比调节失效的核心原因,揭示了数据手册未明确指出的寄存器操作时序陷阱。通过对比错误与正确配置的波形,文章指出关键在于更新占空比高2位前需临时关闭PWM输出,并提供了经过验证的安全操作宏与函数库,帮助开发者彻底解决此问题,实现0%-100%的平滑控制。

yyy34的博客 747

Vue - 解决报错 Error: Cannot find module ‘XXX\@vue\cli-service\bin\vue-cli-service.js‘(vue项目编译运行出错,启动失败)

vue报错,Error: Cannot find module ‘@vue\cli-service\bin\vue-cli-service.js‘,vue2项目启动报错,vue3项目运行出错,vue执行npm run serve报错,找不到@vue/cli-service模块,vue项目关于:Error: Cannot find module ‘D:\@vue\cli-service\bin\vue-cli-service.js‘的解决方案,vue项目跑不起来了,Vue项目报错,跑项目报错Cannot fi

🏆 前端领域优质创作者 3115

Java-栈的基本操作

(后进先出):栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。:栈的删除操作叫做出栈。出数据在栈顶。

qq_51537858的博客 5982

maxim max96712+max96717调试笔记

mxxim max96712 和max96717调试笔记

libuping2023的博客 1万+

java中栈的简单操作

栈是Java语言中最重要的数据结构之一,它的实现,至少应该包括以下几个方法: pop() 出栈操作,弹出栈顶元素。 push(E e) 入栈操作 peek() 查看栈顶元素 isEmpty() 栈是否为空 另外,实现一个栈,还应该考虑到几个问题: 栈的初始大小以及栈满以后如何新增栈空间 对栈进行更新时需要进行同步 简单示例,使用数组实现栈,代码如下: pu

冬青的专栏 8649

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java实现栈的简单操作

public class stract { public static void main(String[] args) { MyStack stack = new MyStack(20); stack.push(10); stack.push(20); stack.push(30); ...

weixin_30906671的博客 67

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java 栈的操作_java实现栈的简单操作

public class stract {public static void main(String[] args) {MyStack stack = new MyStack(20);stack.push(10);stack.push(20);stack.push(30);System.out.println(stack);System.out.println(stack.peek());sta...

weixin_29070721的博客 128

java队列,栈相关简单操作

阻塞队列相关方法:   add        增加一个元索              如果队列已满,则抛出一个IIIegaISlabEepeplian异常   remove    移除并返回队列头部的元素   如果队列为空,则抛出一个NoSuchElementException异常   element   返回队列头部的元素         如果队列为空,则抛出一个NoSuchElement...

ailaojie的博客 346

java栈操作_java实现栈的简单操作

public class stract {public static void main(String[] args) {MyStack stack = new MyStack(20);stack.push(10);stack.push(20);stack.push(30);System.out.println(stack);System.out.println(stack.peek());sta...

weixin_33610601的博客 65

Java用数组实现栈和一些简单的操作

package Stack; public class StackArray { //栈底层用数组存储数据 int[] elements; public StackArray() { this.elements = new int[0]; } //压入元素 public void pushElement(int data){ ...

weixin_44632459的博客 168

简单易懂栈的常用操作总结Java实现

栈的特性:后进先出 顺序栈类的定义 public class Stack{ //定义栈的长度 private int length; //定义存放栈元素的数组 private int data[length]; //定义栈顶元素在数组中的下标 private int top; } 顺序栈的入栈操作 public void Push(int x){ if(top == length - 1){ System.out.println("栈

记录、总结 155

数据结构(JAVA)—— 栈的简单操作

1.栈的英文为(stack) 2.栈是一个先入后出(FILO-First In Last Out)的有序列表。 3.栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。 4.根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除 5.5)出栈(pop)和入栈(push)的概念(如图所示).

weixin_49256786的博客 193

用Java实现的一个简单计算器,使用栈实现运算操作

java实现的一个简易计算器 计算器界面如下:(试用按例在图片上有所显示) 具体代码如下(如果看不懂可以私信我,记得点赞哦): PS:我还是个小菜鸟,写的不好处希望大家多多体谅 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.EmptyStackException; import ...

lxj2116的博客 321

栈Stack的相关操作(java)

/*  * To change this template, choose Tools | Templates  * and open the template in the editor.  */ package arthur.datastruct.programe; import java.util.*; /**  *  * @author dell  */

菜鸟博客 1281

java栈g_Java栈的三种实现方式(完整版)

java什么是栈系统中的堆、栈和数据结构堆、栈不是一个概念。可以说系统中的堆、栈是真实的内存物理区,数据结构中的堆、栈是抽象的数据存储结构。栈:实际上就是满足后进先出的性质,是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。栈的优势是,存取速度比堆要...

weixin_34921325的博客 459

一个简单的java栈

[code="java"] public class MyStack { private long[] arr; private int top; public MyStack() { arr = new long[10]; top = -1; } public MyStack(int maxsize) { arr = new long[maxs...

lyl130的博客 143

Java用LinkedList实现栈

import java.util.LinkedList; public class MyStack { private LinkedList ll=new LinkedList(); public void push(Object o) { ll.addFirst(o); } public Object pop() { if(ll.isEmpty()) { Syst

卡尔 3342
上一篇: 内存优化02
下一篇: 四种生成和解析XML文档的方法
CDCK
博客等级 码龄9年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值