温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-10-28 15:29:12 来源:亿速云 阅读:407 作者:Leah 栏目:开发技术

本篇文章给大家分享的是有关使用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&#63;
   * @return:
   *   True if full else false.
   */
  public boolean isFull() {
    return (rear + 1) % maxSize == front;
  }//Of isFull

  /**
   * Queue is empty&#63;
   * @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

以上就是使用Java 1.8数组实现循环队列,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI