基於實現二次封裝數組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);
}
}
}