Java 1.8使用数组实现循环队列

 更新时间:2020年10月27日 17:11:22   作者:因吉  
这篇文章主要为大家详细介绍了Java 1.8使用数组实现循环队列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java 1.8使用数组实现循环队列的具体代码,供大家参考,具体内容如下

1、引入

使用数组实现循环队列,功能如下:

1)isFull():队列满?
2)isEmpty():队列空?
3)add():添加元素。
4)pop():移除元素。
5)display():展示队列。
6)getSize():获取当前队列元素个数。

2、代码

package DataStructure;

import java.util.Arrays;

/**
 * @author: Inki
 * @email: inki.yinji@qq.com
 * @create: 2020 1022
 * @last_modify: 2020 1023
 */

public class MyArrayQueue<AnyType> {

 /**
  * The default max size of my array queue.
  */
 private final int DEFAULT_MAX_SIZE = 10;

 /**
  * The max size of my array queue.
  */
 private int maxSize;

 /**
  * The front of my array queue.
  */
 private int front;

 /**
  * The rear of my array queue.
  */
 private int rear;

 /**
  * Using array to simulate queue.
  */
 private AnyType[] arrQueue;

 /**
  * The first constructor.
  */
 public MyArrayQueue() {
  this(DEFAULT_MAX_SIZE);
 }//Of the first constructor

 /**
  * The second constructor.
  */
 public MyArrayQueue(int paraMaxSize) {
  maxSize = paraMaxSize + 1;
  arrQueue = (AnyType[]) new Object[maxSize];
  front = 0;
  rear = 0;
 }//Of the second constructor

 /**
  * Queue is full?
  * @return:
  *  True if full else false.
  */
 public boolean isFull() {
  return (rear + 1) % maxSize == front;
 }//Of isFull

 /**
  * Queue is empty?
  * @return:
  *  True if empty else false.
  */
 public boolean isEmpty() {
  return front == rear;
 }//Of isEmpty

 /**
  * Add element.
  * @param:
  *  paraVal:
  *   The given value.
  */
 public void add(AnyType paraVal) {
  if(isFull()) {
   System.out.println("The queue is full.");
   return;
  }//Of if
  arrQueue[rear] = paraVal;
  rear = (rear + 1) % maxSize;
 }//Of add

 /**
  * Pop element.
  */
 public AnyType pop() {
  if (isEmpty()) {
   throw new RuntimeException("The queue is full.");
  }//Of if
  AnyType retVal = arrQueue[front];
  front = (front + 1) % maxSize;
  return retVal;
 }//of pop

 /**
  * Display array queue.
  */
 public void display() {
  if (isEmpty()) {
   System.out.println("The queue is empty.");
   return;
  }//Of if

  System.out.print("The queue is: [");
  int i = front;
  while (i != (rear + maxSize- 1) % maxSize) {
   System.out.printf("%s, ", arrQueue[i]);
   i = (i + 1) % maxSize;
  }//Of while
  System.out.printf("%s]", arrQueue[rear - 1]);
 }//Of display

 /**
  * Get current size of my array queue.
  */
 public int getSize() {
  return (rear - front + maxSize) % maxSize + 1;
 }//Of getSize

 /**
  * The main
  **/
 public static void main(String[] args) {
  MyArrayQueue <Integer> testArrayQueue = new MyArrayQueue<>(3);
  testArrayQueue.add(1);
  testArrayQueue.add(2);
  testArrayQueue.add(4);
  testArrayQueue.pop();
  testArrayQueue.display();
 }//Of main

}//Of MyArrayQueue

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • spring-boot中的SPI机制实例讲解

    spring-boot中的SPI机制实例讲解

    这篇文章主要介绍了spring-boot中的SPI机制实例讲解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • RocketMQ保证消息的有序性的案例分享

    RocketMQ保证消息的有序性的案例分享

    Apache RocketMQ 是一个常用的开源消息中间件,它提供了强大的有序消息处理能力,这里我们会探讨 RocketMQ 是如何保证消息的有序性的,包括其设计原理和相关的源码实现,需要的朋友可以参考下
    2024-04-04
  • Java无界阻塞队列DelayQueue详细解析

    Java无界阻塞队列DelayQueue详细解析

    这篇文章主要介绍了Java无界阻塞队列DelayQueue详细解析,DelayQueue是一个支持时延获取元素的无界阻塞队列,队列使用PriorityQueue来实现,队列中的元素必须实现Delayed接口,在创建元素时可以指定多久才能从队列中获取当前元素,需要的朋友可以参考下
    2023-12-12
  • 基于JavaCore文件的深入分析

    基于JavaCore文件的深入分析

    本篇文章介绍了,对JavaCore文件的深入分析。需要的朋友参考下
    2013-05-05
  • springboot整合redis修改分区的操作流程

    springboot整合redis修改分区的操作流程

    这篇文章主要介绍了springboot整合redis修改分区的操作流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java中命令行参数--与-D的区别

    Java中命令行参数--与-D的区别

    本文主要介绍了Java中命令行参数--与-D的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 使用Java注解和反射实现JSON字段自动重命名

    使用Java注解和反射实现JSON字段自动重命名

    这篇文章主要介绍了如何使用Java注解和反射实现JSON字段自动重命名,文中通过代码示例和图文介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-08-08
  • Java模拟并解决缓存穿透问题

    Java模拟并解决缓存穿透问题

    这篇文章主要介绍了Java模拟并解决缓存穿透问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-08-08
  • 教你在一分钟之内理解Java Lambda表达式并学会使用

    教你在一分钟之内理解Java Lambda表达式并学会使用

    今天给大家带的文章是Java8新特性的相关知识,文章围绕着如何在一分钟之内理解Java Lambda表达式并学会使用展开,文中有非常详细的介绍,需要的朋友可以参考下
    2021-06-06
  • Java汉字转拼音工具类完整代码实例

    Java汉字转拼音工具类完整代码实例

    这篇文章主要介绍了java汉字转拼音工具类完整代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论