Java小知识:使用Java中的数组实现堆栈

这篇文章展示了如何通过使用数组来实现堆栈。
堆栈的要求是:1)堆栈具有一个接受数字以初始化其大小的构造函数,2)堆栈可以容纳任何类型的元素,3)堆栈具有push()和pop()方法。在这里插入图片描述

一个简单的堆栈实现

public class Stack {
private E[] arr = null;
private int CAP;
private int top = -1;
private int size = 0;

@SuppressWarnings("unchecked")
public Stack(int cap) {
	this.CAP = cap;
	this.arr = (E[]) new Object[cap];
}

public E pop() {
	if(this.size == 0){
		return null;
	}

	this.size--;
	E result = this.arr[top];
	this.arr[top] = null;//prevent memory leaking
	this.top--;

	return result;
}

public boolean push(E e) {
	if (isFull())
		return false;

	this.size++;
	this.arr[++top] = e;

	return true;
}

public boolean isFull() {
	if (this.size == this.CAP)
		return false;
	return true;
}

public String toString() {
	if(this.size==0){
		return null;
	}

	StringBuilder sb = new StringBuilder();
	for(int i=0; i<this.size; i++){
		sb.append(this.arr[i] + ", ");
	}

	sb.setLength(sb.length()-2);
	return sb.toString();	
}

public static void main(String[] args) {

	Stack<String> stack = new Stack<String>(11);
	stack.push("hello");
	stack.push("world");

	System.out.println(stack);

	stack.pop();
	System.out.println(stack);

	stack.pop();
	System.out.println(stack);
}}

输出:
hello, world
hello
null
此示例在“有效Java”中使用了两次。首先,堆栈示例用于说明内存泄漏。其次,该示例用于说明何时可以抑制未经检查的警告。
在这里插入图片描述

发布了98 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zhaozihao594/article/details/104262928