基于实现二次封装数组https://blog.csdn.net/qq_39313596/article/details/101630245来实现
github 地址:https://github.com/heng1234/data-structure
队列接口
package com.company.Queue;
/**
* Queue
* 队列接口
* @author heng
**/
public interface Queue<E>{
/**
* 存入队列中
* @param e
*/
void enqueue(E e);
/**
* 从队列中取出一个元素 出队
* @return
*/
E dequeue();
/**
* 拿到队首
* @return
*/
E getFront();
/**
* 大小
* @return
*/
int getSize();
/**
* 是否为空
* @return
*/
boolean isEmpty();
}
实现类
package com.company.Queue;
import com.company.Array.Array;
/**
* ArrayQueue
* 队列的实现
* @author heng
* @date 2019/10/1
**/
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<>();
}
/**
* 存入队列中
* @param e
*/
@Override
public void enqueue(E e) {
array.addLast(e);
}
/**
* 从队列中取出一个元素 出队
* @return
*/
@Override
public E dequeue() {
return array.removeFirst();
}
/**
* 拿到队首
* @return
*/
@Override
public E getFront() {
return array.getFirst();
}
/**
* 大小
* @return
*/
@Override
public int getSize() {
return array.getSize();
}
/**
* 是否为空
* @return
*/
@Override
public boolean isEmpty() {
return array.isEmpty();
}
/**
* 查看有多少容积
* @return
*/
public int getCapacity(){
return array.getCapacaity();
}
@Override
public String toString(){
StringBuilder builder = new StringBuilder();
builder.append("Queue: front [");
for (int i = 0; i < array.getSize(); i++) {
builder.append(array.get(i));
if (i != array.getSize()-1){
builder.append(" , ");
}
}
builder.append("] tail");
return builder.toString();
}
}
测试:
public static void main(String[] args) {
ArrayQueue<Integer> queue = new ArrayQueue<>();
for (int i = 0; i < 10; i++) {
queue.enqueue(i);
System.out.println(queue);
if (i % 3 == 2){
queue.dequeue();
System.out.println(queue);
}
}
}