1.编写代码
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];
}
}
}
2.编写测试代码
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 ...