package com.fc.queue;
/**

  • @ClassName SequentialQueue 程序队列
  • @Description 放弃队头始终在索引为0的地位
  • @Author Fclever
  • @Date 2021/7/2 15:59
    **/

public class SequentialQueue<T> {

/** * 队列默认长度10 */private static final int MAXLEN = 10;/** * 存储数据数组 */Object[] queueData;/** * 队尾索引 *     队列为空,指向-1,否则,始终指向队尾元素n */int tail;public SequentialQueue() {}/** * 1. 初始化队列 */public void initQueue() {    // 初始化存储数组    this.queueData = new Object[MAXLEN];    // 设置队尾    this.tail = -1;}/** * 2. 销毁队列 */

// public void destroyQueue() {
//
// }

/** * 3. 清空队列 */public void clearQueue() {    for (int i = 0; i<=this.tail;i++){        this.queueData[i] = null;    }    this.tail = -1;}/** * 4. 判断队列是否为空 * @return */public boolean queueEmpty() {    return this.tail == -1;}/** * 5. 获取队头元素 * @return */public T getHead() {    return (T) this.queueData[0];}/** * 6. 入队 * @param data  入队元素 */public void enQueue(T data) {    // 判断队列是否满    if (this.tail + 1 == this.MAXLEN) {        throw new OutOfMemoryError();    }    // 插入元素    this.queueData[++this.tail] = data;}/** * 7. 出队 * @return 返回队头元素 */public T deQueue() {    if (this.queueEmpty()) {        return null;    }    // 返回值    T data = (T) this.queueData[0];    // [贝宝](https://www.gendan5.com/wallet/PayPal.html)其余往前挪动    System.arraycopy(this.queueData, 1, this.queueData, 0, this.tail);    this.queueData[this.tail--] = null;    return data;}/** * 8. 获取队列理论元素个数 * @return */public int queueLength() {    return this.tail+1;}/** * 9. 遍历元素 */public void getAll() {    for (int i=0;i<=this.tail;i++){        System.out.printf("第%d个元素为:%s\n",i,this.queueData[i]);    }}

}
测试
package com.fc.queue;
import org.junit.Test;
import static org.junit.Assert.*;
/**

  • @ClassName SequentialQueueTest
  • @Description
  • @Author Fclever
  • @Date 2021/7/5 13:20
    **/

public class SequentialQueueTest {

@Testpublic void testSequentialQueueTest() {    SequentialQueue<String> sequentialQueue = new SequentialQueue<>();    sequentialQueue.initQueue();    sequentialQueue.enQueue("1");    sequentialQueue.enQueue("2");    sequentialQueue.enQueue("3");    sequentialQueue.enQueue("4");    sequentialQueue.enQueue("5");    System.out.println(sequentialQueue.queueLength());    sequentialQueue.deQueue();    sequentialQueue.deQueue();    sequentialQueue.getAll();}

}