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,框架)