Java实现栈
package algorithm;
import java.util.Arrays;
import java.util.Iterator;
/**
@author Administrator
@date 2022-09-12 16:38
数组栈
*/
public class MyArrayStack implements Iterable {
// 定义一个数组
private Object[] elementData;
// 顶部的索引
private int topIndex;
// 构造方法确定栈的长度
public MyArrayStack(int size) {
this.elementData = new Object[size];
}/**
- 定义迭代器
- @return
*/
@Override
public Iterator iterator() {
return new MyArrayStackIter();
}
class MyArrayStackIter implements Iterator{
@Override
public boolean hasNext() {
return topIndex != elementData.length;
}
@Override
public E next() {
return pop();
}
@Override
public void remove() {
pop();
}
}
public boolean push(E element){
// 判断扩容两倍
if(topIndex >= elementData.length){
elementData = Arrays.copyOf(elementData,elementData.length << 1);
}
elementData[topIndex++] = element;
return true;
}
// 删除并出栈 是否删除就看topIndex本身的大小是否改变
public E pop(){
if(topIndex <= 0){
throw new RuntimeException("栈为空");
}
return (E) elementData[--topIndex];
}
// 不删除出栈 栈顶元素
public E peek(){
if(topIndex <= 0){
throw new RuntimeException("栈为空");
}
return (E) elementData[topIndex - 1];
}
public static void main(String[] args) {
MyArrayStack myArrayStack = new MyArrayStack(5);
myArrayStack.push("11");
myArrayStack.push("22");
myArrayStack.push("33");
System.out.println("-----------");
System.out.println(myArrayStack.pop());
System.out.println(myArrayStack.pop());
System.out.println(myArrayStack.pop());
System.out.println(myArrayStack.pop());
// Iterator iterator = myArrayStack.iterator();
// while (iterator.hasNext()){
// System.out.println(iterator.next());
// }
}
}
Java实现栈的更多相关文章
- java技术栈:项目概述
学习使用java到现在也有三年多了,这三年基本是以项目驱动的方式学习,有好有坏,个人觉得好处在于,有一个清晰的目标让你解决,这会让你学习非常迅速有效.当然坏处就是片面,不成体系.这种学习方式在学校以小 ...
- Ninja:Java全栈Web开发框架-Ninja中文网
相信不少业界人士都还停留在SSh的时代 其实我想给大家推荐的一个轻量级框架那就是Ninja; Ninja是一个Java全栈Web开发框架,稳定.快速.非常高效. 商业价值 在你的下一个项目中,Ninj ...
- Java虚拟机栈和本地方法栈
Java虚拟机栈的特征 线程私有 后进先出(LIFO)栈 存储栈帧,支持Java方法的调用.执行和退出 可能出现OutOfMemoryError异常和StackOverflowError异常 Java ...
- 剑指Offer——Java实现栈和队列的互模拟操作
剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列 题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 思路:其实就是把队列正常入 ...
- Java实现栈之计算器
Java实现栈来做一个将中缀表达式转化为后缀表达式的程序,中缀表达式更符合我们的主观感受,后缀表达式更适合计算机的运算,下面直接上代码吧: package Character1; import jav ...
- Java技术栈思维导图
Java技术栈思维导图 Java IO流体系 设计模式
- java 虚拟机栈
与程序计数器一样,Java虚拟机栈也是线程私有的,他的生命周期与线程相同.虚拟机栈描述的是Java执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表,操作栈,动态链接,方法出口 ...
- 20155301第十一周java课栈程序
20155301第十一周java课栈程序 内容一:后序表达式: abcde/-f+ 内容二:根据填充以下代码: import java.util.Scanner; public class MyDCT ...
- Java虚拟机栈 和 方法区 的联系
1.Java虚拟机栈 java方法执行时的内存模型 1.1 栈帧 每个方法都会在虚拟机栈中创建一个对应的栈帧,用于存储局部变量表,操作数栈,动态链接,方法出口等信息. 一个方法的调用到结束就对应这一个 ...
- java全栈day04--方法
day04内容介绍 1 方法基础知识 2 方法高级内容 3 方法案例 一 方法的概念 A:为什么要有方法 提高代码的复用性 B 什么是方法 完成特定功能的代码块 修饰符 返回值类型 方 ...
随机推荐
- Vue+SpringBoot+ElementUI实战学生管理系统-8.班级管理模块
1.章节介绍 前一篇介绍了专业管理模块,这一篇编写班级管理模块,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.实现效果 班级列表 修改班级 4.模块 ...
- Vue+SpringBoot+ElementUI实战学生管理系统-6.院系管理模块
1.章节介绍 前一篇介绍了用户管理模块,这一篇编写院系管理模块,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.实现效果 院系列表 修改院系 4.模块 ...
- spring boot+sqlite+mybatis实现增删改查例子
主要是更换了下sqlite的数据源而已,其他代码不变. 我都贴一下吧,这个算是比较通用的基础增删改查代码. 1.创建test.db 可以使用Idea自带的Database插件配置,也可以命令行创建,具 ...
- android 逆向笔记
壳检测工具 GDA 2. 逆向分析APP 一般流程 1. 使用自动化检测工具检测APP是否加壳,或者借助一些反编译工具依靠经验判断是否加壳 2. 如果apk加壳,则需要先对apk进行脱壳 3. 使用` ...
- mac更新系统后,提示xcrun的错误问题
pycharm运行代码终端报错: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), ...
- 机器学习策略篇:详解单一数字评估指标(Single number evaluation metric)
单一数字评估指标 无论是调整超参数,或者是尝试不同的学习算法,或者在搭建机器学习系统时尝试不同手段,会发现,如果有一个单实数评估指标,进展会快得多,它可以快速告诉,新尝试的手段比之前的手段好还是差.所 ...
- 2021 虎符杯hate num 注入题
前言 今天遇到个有意思的SQL盲注,花了不少功夫,也学到了新姿势,遂记录下来以备后续碰到相同场景使用. 题目 这是2021 虎符杯的一道web题,有一个目标站点且附带了源码. 源码内容包括: 主要逻辑 ...
- 【Java复健指南13】OOP高级04【告一段落】-四大内部类
四大内部类 一个类的内部又完整的嵌套了另一个类结构. class Outer{ //外部类 class lnner{ //内部类 } } class Other{//外部其他类 } 被嵌套的类称为内部 ...
- Java实现DES加密解密
DES(Data Encryption Standard)是一种对称加密算法,所谓对称加密就是加密和解密都是使用同一个密钥 加密原理: DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产 ...
- 【Azure 应用服务】Python3.7项目在引用pandas 模块后,部署报错
问题描述 参考"快速入门:在 Linux 上的 Azure 应用服务中创建 Python 应用" 文档,在App Service For Linux环境中部署Python应用,在添 ...