Java实现队列的三种方法集合

 更新时间:2020年09月16日 14:17:28   作者:颜颜颜颜颜越  
这篇文章主要介绍了Java实现队列的三种方法集合,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

数组实现队列

//数组实现队列
class queue{
 int[] a = new int[5];
 int i = 0;
 //入队操作
 public void in(int m) {
 a[i++] = m;
 }
// 出队列操作  取出最前面的值 通过循环遍历把所有的数据向前一位
 public int out() {
 int index = 0;
 int temp = a[0];
 for(int j = 0;j < i;j++) {
  a[j] = a[j + 1];
 }
 return temp;
 } 
}

ArrayList实现队列

//集合实现队列
class queue{
 List<Integer> list = new ArrayList<Integer>();
 int index = 0;
 
 public void in(int n) {
 list.add(n);
 index++;
 }
 //出队列操作
 //出队
  public int out(){ 
    if(!list.isEmpty()){ 
      index--; 
      return list.remove(0); 
    } 
    return -1; 
  } 
}

两个堆栈实现队列

//两个堆栈实现一个队列
class queue3 {

 Stack<Integer> stackA = new Stack<Integer>();
 Stack<Integer> stackB = new Stack<Integer>();

 //入队
 public void in(int n) {
   stackA.push(n);
 }

 //出队 我们把A里面的元素遍历拿出放入B中 再拿出B中的第一个元素 
 public int out() {
  //判断b栈有没有元素 有返回false 无返回真
   if(stackB.isEmpty()) {
    while(!stackA.isEmpty()) {
    stackB.push(stackA.pop());
    }
   }
   return stackB.pop();
 }
}

补充知识:java使用链表实现队列

队列使用Java进行链表实现,在网上找到了一张图,很好,借鉴一下

设置两个结点node,front指向队首元素,rear指向队尾;

上代码:

 public class LinkedQueue {
 
  Node front;//队头指针,指向队头节点
  Node rail;//队尾指针,指向队尾节点 
  int size = 0;//记录队列长度 
 
  //构造函数
  public LinkedQueue() {
    front = rail = null;
  }
 
  public boolean isEmpty() {
    return size == 0 ? true : false;
  }
 
  //添加元素
  public boolean addQueue(Object ele) {
    if (size == 0) {
      front = new Node(null, ele);
      rail = front;
      size++;
      return true;
    }
    Node s = new Node(null, ele);
    //这块有个主意的地方,一旦rail设置了next属性,因为front节点与rail节点指向了同一个node节点,持有同一个结点的一个引用,因此front节点next属性也被填充
    rail.setNext(s);
    rail = s;
    size++;
    return true;
  } 
 
  /**
   * 删除元素,出队列
   * @return
   */
  public boolean deleteQueue() {
    if (isEmpty()) {
      System.out.println("当前队列为空");
      return false;
    } 
    front = front.next;
    size--;
    return true; 
  } 
 
  public static void main(String[] args) {
    LinkedQueue queue = new LinkedQueue();
 
    queue.addQueue(1);
    queue.addQueue(2);
    queue.addQueue(3);
    queue.deleteQueue();
 
  } 
}
 
/**
 * 首先链表底层是一个个结点
 */
class Node {
 
  Node next;
  Object element;
 
  public Node(Node next, Object element) {
    this.next = next;
    this.element = element;
  }
 
  public Node getNext() {
    return next;
  }
 
  public void setNext(Node next) {
    this.next = next;
  }
 
  public Object getElement() {
    return element;
  }
 
  public void setElement(Object element) {
    this.element = element;
  }
 
}

以上这篇Java实现队列的三种方法集合就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Java的JDBC API的存储过程与SQL转义语法的使用

    详解Java的JDBC API的存储过程与SQL转义语法的使用

    这篇文章主要介绍了详解Java的JDBC API的存储过程与SQL转义语法的使用,JDBC是Java用于连接使用各种数据库的API,需要的朋友可以参考下
    2015-12-12
  • java_时间戳与Date_相互转化的实现代码

    java_时间戳与Date_相互转化的实现代码

    本篇文章是对java_时间戳与Date_相互转化的实现代码进行了详细的分析介绍,需要的朋友参考下如下。
    2016-11-11
  • 基于BIO的Java Socket通信详解

    基于BIO的Java Socket通信详解

    这篇文章主要为大家详细介绍了基于BIO的Java Socket通信相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • JVM核心教程之JVM运行与类加载全过程详解

    JVM核心教程之JVM运行与类加载全过程详解

    我们都知道一个java程序运行要经过编译和执行,但是这太概括了,中间还有很多步骤,下面这篇文章主要给大家介绍了关于JVM核心教程之JVM运行与类加载全过程的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2018-04-04
  • Java文件IO操作教程之DirectIO的意义

    Java文件IO操作教程之DirectIO的意义

    这篇文章主要给大家介绍了关于Java文件IO操作教程之DirectIO的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • Java实现的生成二维码统计扫描次数并转发到某个地址功能详解

    Java实现的生成二维码统计扫描次数并转发到某个地址功能详解

    这篇文章主要介绍了Java实现的生成二维码统计扫描次数并转发到某个地址功能,可实现生成带统计功能的二维码,涉及java二维码的生成、参数传递、解析等相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • 为什么SpringMVC中请求的body不支持多次读取

    为什么SpringMVC中请求的body不支持多次读取

    这篇文章主要介绍了为什么SpringMVC中请求的body不支持多次读取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 浅谈Java 三种方式实现接口校验

    浅谈Java 三种方式实现接口校验

    这篇文章主要介绍了浅谈Java 三种方式实现接口校验,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java的关键字与标识符小结

    Java的关键字与标识符小结

    这篇文章主要介绍了Java的关键字与标识符,总结整理了Java各种常见的关键字与标识符功能、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 浅谈Spring如何解决循环依赖的问题

    浅谈Spring如何解决循环依赖的问题

    这篇文章主要介绍了浅谈Spring如何解决循环依赖的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论