`
linhaoxiang
  • 浏览: 22277 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java集合框架分析(五)——List集合之自己实现一个数组栈

阅读更多

    花了半个小时复习了下栈,自己用数组简单实现了下,也为之后要分析到的Vector和Stack做个准备,只是个简单的数组栈,还没有像Stack里面那么优化,代码如下:

 

class Stack {

	// 定义一个数组来实现栈
	private Object[] stack;
	// 栈内的元素个数,也可以当做栈顶元素的游标来用
	private int size = 0;
	// 初始化一个容量来创建栈
	private int capacityIncrement = 0;

	// 指定一个初始容量来创建stack
	public Stack(int capacityIncrement) {
		stack = new Object[capacityIncrement];
	}

	// 向栈顶压入一个元素
	public Object push(Object obj) {

		return stack[size++] = obj;

	}

	// 返回栈顶元素,不执行删除操作
	public Object peek() {

		if (size == 0) {
			throw new RuntimeException("空栈异常");
		}
		// 栈的容量和下标总是差1,所以要先自减操作
		return stack[--size];
	}

	// 返回栈顶元素并删除
	public Object pop() {
		Object obj;
		obj = peek();
		stack[size] = null;
		return obj;

	}

	// 返回栈的长度
	public int capacity() {

		return stack.length;
	}
	//返回栈内元素个数
	public int size(){
		
		return size;
		
	}

	// 判断栈内是否为空
	public boolean isEmpty() {
		
		return size()==0;
	}

	// 输出栈内元素
	public void iterator() {

		for (int i = 0; i < stack.length; i++) {
			System.out.println(stack[i]);

		}

	}

}

public class MyStack {
	public static void main(String[] args) {

		Stack stack = new Stack(10);
		// 向栈顶压入10个元素
		for (int i = 0; i < 10; i++) {
			stack.push("元素" + i);
			System.out.println("元素" + i + "入栈");
		}
		//输出栈内元素
		stack.iterator();
		// 依次弹出10个元素
		for (int i = 0; i < 10; i++) {
			System.out.println(stack.pop() + "出栈");
		}
		stack.iterator();
		stack.isEmpty();
	}

}

下面是实例的结果:

元素0入栈
元素1入栈
元素2入栈
元素3入栈
元素4入栈
元素5入栈
元素6入栈
元素7入栈
元素8入栈
元素9入栈
元素0
元素1
元素2
元素3
元素4
元素5
元素6
元素7
元素8
元素9
元素9出栈
元素8出栈
元素7出栈
元素6出栈
元素5出栈
元素4出栈
元素3出栈
元素2出栈
元素1出栈
元素0出栈
null
null
null
null
null
null
null
null
null
null

  

 

 

 

分享到:
评论

相关推荐

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    第1章 让自己的第一个Java程序跑起来 2 教学视频:19分钟 1.1 想要用Java改变这个世界吗? 2 1.1.1 Java有什么优势? 2 1.1.2 Java在哪儿? 3 1.2 准备好开始Java之旅 3 1.2.1 下载JDK 4 1.2.2 安装JDK 5 ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    第1章 让自己的第一个Java程序跑起来 2 教学视频:19分钟 1.1 想要用Java改变这个世界吗? 2 1.1.1 Java有什么优势? 2 1.1.2 Java在哪儿? 3 1.2 准备好开始Java之旅 3 1.2.1 下载JDK 4 1.2.2 安装JDK 5 ...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    在 java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    1.7.1 创建第一个Java Web项目 1.7.2 将图片输出到JSP页面之中 1.8 疑难解惑 1.8.1 Tomcat端口被占用导致不能启动 1.8.2 Eelipse没有创建JSP项 1.9 精彩回顾 第2章 JavaWeb开发必修课 ——JSP语法 2.1 本章学习任务...

    Java JDK实例宝典

    7 一个支持多线程的服务器框架 13. 8 代理服务器 13. 9 Telnet客户端 13. 10 UDP编程 13. 11 聊天室服务器端 13. 12 聊天室客户端 13. 13 FTP客户端 第14章 数据库 14. 1 连接各种...

    Java开发技术大全 电子版

    1.3一个简单的Java应用程序14 1.4一个简单的Java小程序16 1.5本章小结18 第2章Java语言基础19 2.1Java语言的特点19 2.2Java程序的构成21 2.3数据类 型23 2.3.1基本数据类型23 2.3.2常量25 2.3.3变量26 ...

    javaSE代码实例

    第14章 集合框架——强大的对象管理器 270 14.1 Object类——所有类的超类 270 14.1.1 toString方法的重写 270 14.1.2 equals方法的意义 271 14.1.3 hashCode方法的意义 272 14.2 重写equals与hashCode...

    外文翻译 stus MVC

    Struts——an open-source MVC implementation This article introduces Struts, a Model-View-Controller implementation that uses servlets and JavaServer Pages (JSP) technology. Struts can help you control...

    c#学习笔记.txt

    1. 使用上述指导创建一个一般集合,另外实现 IEnumerable 接口。此集合可用于其他语言(如 Visual Basic)。 2. 在集合类中使用一个预定义的集合。 (2) throw 语句用于发出在程序执行期间出现反常情况(异常)的...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。  系统预定义角色 预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下面我们就简单介绍些系统角色:  CONNECT...

Global site tag (gtag.js) - Google Analytics