Java数组实现简单的队列
代码:
public class ArrayQueue {
private final Object[] data;
private final int maxSize;
private int currentSize;
private int front;
private int tail;
public ArrayQueue(int maxSize){
if (maxSize <= 0) {
throw new IllegalArgumentException("容量应该大于0 : " + maxSize);
}
this.maxSize = maxSize;
data = new Object[this.maxSize];
this.front = -1;
this.tail = -1;
this.currentSize = 0;
}
public void insert(Object obj){
if(currentSize == maxSize){
throw new IllegalArgumentException("队列已经满了,不能插入数据");
}else{
if(tail == -1 && front == -1 ){ //为空的时候,当remove掉最后一个元素的时候将front和tail都重置
front ++;
tail ++;
currentSize++;
data[front] = obj;
}else{
tail = (tail+1)%maxSize;
currentSize++;
data[tail] = obj;
}
}
}
public Object remove(){
Object rtn = null;
if(currentSize == 1){
currentSize--;
rtn = data[front]; /*先取值*/
data[front] = null;
front = -1;
tail = -1;
}else if(currentSize >1){
currentSize--;
rtn = data[front];
data[front] = null;
front = (front+1)%maxSize;
}
return rtn;
}
public boolean isEmpty(){
return currentSize ==0;
}
public boolean isFull(){
return currentSize == maxSize;
}
public void display(){
if(isEmpty()){
System.out.print("队列为空");
}else{
System.out.print("[ ");
for(Object o : data){
System.out.print(o+" ");
}
System.out.print(" ]");
}
System.out.println();
}
public static void main(String[] args) {
ArrayQueue arrayQueue = new ArrayQueue(5);
arrayQueue.insert("0");
arrayQueue.insert("1");
arrayQueue.insert("2");
arrayQueue.insert("3");
arrayQueue.insert("4");
arrayQueue.display();
System.out.println("//");
System.out.println(arrayQueue.remove());
System.out.println(arrayQueue.remove());
arrayQueue.display();
System.out.println("//");
arrayQueue.insert("5");
arrayQueue.display();
System.out.println("//");
System.out.println(arrayQueue.remove());
System.out.println(arrayQueue.remove());
System.out.println(arrayQueue.remove());
arrayQueue.display();
System.out.println("//");
arrayQueue.insert("6");
arrayQueue.display();
}
}