package com.zhb.corejava.util; public class Stack<E> { private E[] elementData; private int top; private int count; @SuppressWarnings("unchecked") public Stack(int size) { this.elementData = (E[]) new Object[size]; top = -1; count = 0; } public Stack() { this(10); } /** * 返回堆栈长度 * @return */ public int getSize(){ return elementData.length; } /** * 返回栈中元素的个数 * @return */ public int getElementCount() { return count; } /** * 判栈空 * @return */ public boolean isEmpty(){ return top == -1; } /** * 判栈满 * @return */ public boolean isFull(){ return top == (elementData.length-1); } /** * 入栈操作 * @param object */ public void push(E object){ if(isFull()){ throw new RuntimeException("栈已经满"); }else{ elementData[++top] = object; count++; } } /** * 出栈操作,并返回被出栈的元素 * @return */ public E pop(){ if(isEmpty()){ throw new RuntimeException("栈是空的"); }else{ count--; return elementData[top--]; } } /** * 返回栈顶元素 * @return */ public E peek(){ if(isEmpty()){ throw new RuntimeException("栈是空的"); }else{ return elementData[top]; } } }
编写测试类:
package com.zhb.corejava.util; public class ClientTest { public static void main(String[] args) { Stack<User> stack = new Stack<User>(); User user1 = new User("张三", 1); User user2 = new User("李四", 2); User user3 = new User("王五", 2); stack.push(user1); stack.push(user2); stack.push(user3); System.out.println("stack.size====" + stack.getSize()); User user = stack.pop(); System.out.println("user.name==1==" + user.getName()); System.out.println("-------------------------------------------"); user = stack.pop(); System.out.println("user.name==2==" + user.getName()); System.out.println("-------------------------------------------"); user = stack.pop(); System.out.println("user.name==3==" + user.getName()); System.out.println("stack.size====" + stack.getSize()); System.out.println("-------------------------------------------"); stack.push(user1); System.out.println("stack.size====" + stack.getSize()); System.out.println("stack.isEmpty==="+stack.isEmpty()); System.out.println("stack.isFull==="+stack.isFull()); } }
您还没有登录,请您登录后再发表评论
主要给大家介绍了关于Java如何自定义异常打印非堆栈信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
介绍了Java编程思想里的泛型实现一个堆栈类,有需要的朋友可以参考一下
它是如何工作的我正在使用ANTLR生成带有语法文件的Java词法分析器和解析器。 “计算器语言”由数字,运算符,空格,方括号组成...我构建的语法的目的是将计算器语言转换为堆栈机器语言。然后,我们可以使用src / ...
使用LinkedList模拟堆栈操作,包括进栈、出栈,入队、出队
使用自定义堆栈进行骑士漫游,包括完整的尝试过程,可编译通过。
2)实用程序包(java.util):提供的支持包括哈希表、堆栈、可变数组、时间和日期等。 输入输出包(java.io):用统一的流模型来实现所有格式的I/O,包括文件系统、网络、输入。 3)网络包(java.net):支持Internet的TCP...
YouShallNotStack 自定义项目的堆栈大小
我的自定义 java 日志记录/断言工具。 我在大学时写了这段代码,我经常用它来生成方便、易于调试的终端和日志文件输出。 它包含我在本科级别的 Java 编码中发现有用的库代码。 最值得注意的是,它解决了以下烦人的...
- 当代码执行过程中出现如除数为零的`ArithmeticException`等错误时,Java会立即转至相应的catch块进行异常处理,如输出错误信息并打印堆栈跟踪。 2. **finally块的使用**: - 不论try块中的代码是否抛出异常,...
8.1.4 认识堆栈追踪 241 8.1.5 关于assert 245 8.2 异常与资源管理 247 8.2.1 使用finally 247 8.2.2 自动尝试关闭资源 249 8.2.3 java.lang.autocloseable接口 251 8.3 重点复习 255 8.4 课后练习 ...
默认情况下,Glide使用基于HttpUrlConnection的自定义堆栈,但也包括插入Google的Volley项目或Square的OkHttp库的实用程序库。Glide的主要重点是使滚动任何类型的图像列表尽可能流畅和快速,但Glide对于几乎任何需要...
自定义堆栈也将支持。 一个函数 一个可执行的 java 类 + 标记格式的概述。 标记下来的摘要部分必须描述函数应如何在 javax.io 上显示。 使用 javax-meta 代码块,类似于 { "title":"Hello Function", "description":...
将一个表达式转为后缀表达式,用堆栈计算 中缀转后缀的过程中遇到数字直接输出,遇到符号则判断优先级。
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
graalvm堆栈自定义GraalVM发行版,可用于Direktspeed项目安装我认为在lib / node_modules / bin中应该什么都不是,但是谁知道export GRAALVM_HOME=~/.graalvmexport NPM_HOME=$GRAALVM_HOME/languages/jsexport JAVA...
Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。
ItemTester实现自定义Java对象,并测试其属性和方法。 PrescottLukeH2 Java中巴比伦平方根方法的递归实现。 PrescottLukeH3 Java中的链表实现。 普雷斯科特·卢克H4 Java中的堆栈和队列实现。 普雷斯科特·卢克...
在浏览器中进行Java调试。 使用和websocket,以便您可以从Web浏览器中调试Java程序。 下面的屏幕快照显示了此Java的浏览器内调试会话: public static void main(String[] args) { int test1 = 10; int test2 ...
相关推荐
主要给大家介绍了关于Java如何自定义异常打印非堆栈信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
介绍了Java编程思想里的泛型实现一个堆栈类,有需要的朋友可以参考一下
它是如何工作的我正在使用ANTLR生成带有语法文件的Java词法分析器和解析器。 “计算器语言”由数字,运算符,空格,方括号组成...我构建的语法的目的是将计算器语言转换为堆栈机器语言。然后,我们可以使用src / ...
使用LinkedList模拟堆栈操作,包括进栈、出栈,入队、出队
使用自定义堆栈进行骑士漫游,包括完整的尝试过程,可编译通过。
2)实用程序包(java.util):提供的支持包括哈希表、堆栈、可变数组、时间和日期等。 输入输出包(java.io):用统一的流模型来实现所有格式的I/O,包括文件系统、网络、输入。 3)网络包(java.net):支持Internet的TCP...
YouShallNotStack 自定义项目的堆栈大小
我的自定义 java 日志记录/断言工具。 我在大学时写了这段代码,我经常用它来生成方便、易于调试的终端和日志文件输出。 它包含我在本科级别的 Java 编码中发现有用的库代码。 最值得注意的是,它解决了以下烦人的...
- 当代码执行过程中出现如除数为零的`ArithmeticException`等错误时,Java会立即转至相应的catch块进行异常处理,如输出错误信息并打印堆栈跟踪。 2. **finally块的使用**: - 不论try块中的代码是否抛出异常,...
8.1.4 认识堆栈追踪 241 8.1.5 关于assert 245 8.2 异常与资源管理 247 8.2.1 使用finally 247 8.2.2 自动尝试关闭资源 249 8.2.3 java.lang.autocloseable接口 251 8.3 重点复习 255 8.4 课后练习 ...
默认情况下,Glide使用基于HttpUrlConnection的自定义堆栈,但也包括插入Google的Volley项目或Square的OkHttp库的实用程序库。Glide的主要重点是使滚动任何类型的图像列表尽可能流畅和快速,但Glide对于几乎任何需要...
自定义堆栈也将支持。 一个函数 一个可执行的 java 类 + 标记格式的概述。 标记下来的摘要部分必须描述函数应如何在 javax.io 上显示。 使用 javax-meta 代码块,类似于 { "title":"Hello Function", "description":...
将一个表达式转为后缀表达式,用堆栈计算 中缀转后缀的过程中遇到数字直接输出,遇到符号则判断优先级。
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
graalvm堆栈自定义GraalVM发行版,可用于Direktspeed项目安装我认为在lib / node_modules / bin中应该什么都不是,但是谁知道export GRAALVM_HOME=~/.graalvmexport NPM_HOME=$GRAALVM_HOME/languages/jsexport JAVA...
Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。
ItemTester实现自定义Java对象,并测试其属性和方法。 PrescottLukeH2 Java中巴比伦平方根方法的递归实现。 PrescottLukeH3 Java中的链表实现。 普雷斯科特·卢克H4 Java中的堆栈和队列实现。 普雷斯科特·卢克...
在浏览器中进行Java调试。 使用和websocket,以便您可以从Web浏览器中调试Java程序。 下面的屏幕快照显示了此Java的浏览器内调试会话: public static void main(String[] args) { int test1 = 10; int test2 ...