阅读本文章前先阅读java实现数据结构01(数组详解代码之自定义数组)
队列接口
/**
* @description: 队列接口
* @author: liangrui
* @create: 2019-12-15 20:24
**/
public interface Queue<E> {
/**
* 向队列添加元素
* @param e 添加的元素
*/
void enqueue(E e);
/**
* 移除队首中的元素
* @return 返回移除的元素
*/
E dequeue();
/**
* 获取队首的元素
* @return 返回队首的元素
*/
E getFront();
/**
* 获取队列元素个数
* @return 返回队列元素个数
*/
int getSize();
/**
* 判断队列是否为空
* @return 为空返回true,不为空返回false
*/
boolean isEmpty();
}
基于数组创建的队列
/**
* @description: 基于数组创建的队列
* @author: liangrui
* @create: 2019-12-15 20:31
**/
public class ArrayQueue<E> implements Queue<E> {
private Array<E> array;
/**
* 有参构造函数
* @param capacity 容器大小
*/
public ArrayQueue(int capacity){
array=new Array<>(capacity);
}
/**
* 无参构造函数
*/
public ArrayQueue(){
array=new Array<>();
}
@Override
public void enqueue(E e) {
array.addLast(e);
}
@Override
public E dequeue() {
array.removeFirst();
return array.get(0);
}
@Override
public E getFront() {
return array.get(0);
}
@Override
public int getSize() {
return array.getSize();
}
@Override
public boolean isEmpty() {
return array.isEmpty();
}
@Override
public String toString() {
StringBuilder res=new StringBuilder();
res.append("Queue: ");
res.append("front [");
for (int i = 0; i < array.getSize(); i++) {
res.append(array.get(i));
if (i!=array.getSize()-1){
res.append(",");
}
}
res.append("] tail");
return res.toString();
}
}
main测试
public class Main {
public static void main(String[] args) {
ArrayQueue<Integer> arrayQueue=new ArrayQueue<>();
for (int i = 0; i < 5; i++) {
arrayQueue.enqueue(i);
System.out.println(arrayQueue);
}
arrayQueue.dequeue();
System.out.println(arrayQueue);
}
}
运行结果:
Queue: front [0] tail
Queue: front [0,1] tail
Queue: front [0,1,2] tail
Queue: front [0,1,2,3] tail
Queue: front [0,1,2,3,4] tail
Queue: front [1,2,3,4] tail