java数组实现_java数组实现简单队列

队列是先入先出的结构,这和下压栈的规则一样,实现一个队列和实现一个下压栈很类似,所以我们可以先设定一个变量pointer指向栈顶,将新元素添加到array[pointer]之中,然后对pointer自增,出队的时候,弹出栈顶的元素即可。

可以先设置队列的规则:

public interface IQueue{

void push(T item);

T pop();

T peek();

int size();

boolean isEmpty();

void resize(int capacity);

}

在添加和删除的时候,需要判断数组的非空元素的个数,对数组做对应的resize:

1.push的时候,如果pointer == array.length,就将数组的容量扩充一倍

2.pop的时候,如果pointer == array.length / 4,就将数组的容量减少一半

队列的具体代码如下:

public class ArrayQueueimplements IQueue{

private T[] items;

private int pointer;//指向栈顶

public T ArrayQueue() {

this.items = (T[]) new Object[10];

}

@Override

public void push(T item) {

if(pointer == items.length) resize(2 * items.length);

items[pointer++] = item;

}

@Override

public T pop() {

T item = items[pointer - 1];

//防止对象游离

items[pointer -1] = null;

pointer --;

if(pointer > 0 && pointer == items.length /4) resize(items.length / 2);

return item;

}

/**

* 出队但不删除

* @return

*/

@Override

public T peek() {

return items[pointer - 1];

}

@Override

public int size() {

return pointer;

}

@Override

public boolean isEmpty() {

return pointer == 0;

}

@Override

public void resize(int capacity) {

if(capacity >= pointer){

T[] temp = (T[]) new Object[capacity];

for(int i = 0; i < capacity; i++){

temp[i] = items[i];

}

items = temp;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值