大家好,欢迎来到雄雄的小课堂,今天给大家分享的是“java中的Queue队列的用法”

前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用的,殊不知,java中还有个Queue,今天,我们就来看看Queue的用法。

何为队列?

队列是一种特殊数据结构,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,“先进先出”的场景,和我们生活中的排队类似,谁先来先给谁办理。

Queue队列

Java中,LinkedList类就是实现的Queue接口,因此,我们可以把LinkedList当成队列来使用。

先来看看Queue接口的源码,然后每个方法每个方法的看:


package java.util;public interface Queue<E> extends Collection<E> {boolean add(E e);boolean offer(E e);E remove();E poll();E element();E peek();
}

插入元素:

其中,add方法和offer方法都是可以在队列的尾部添加元素,代码如下:

public static void main(String[] args) {Queue<String> list = new LinkedList<String>();//添加元素list.add("a");list.offer("b");list.offer("c");list.offer("d");System.out.println("元素列表:");//遍历for (String s : list) {System.out.print(s+" ");}}

运行结果如下:

add方法和offer方法的区别:
虽然两个方法都可以实现添加,但是如果队列满的时候,使用add方法时就会报错,而offer方法就不一样了,它在添加失败时不会直接报错,而是会返回false。

删除元素:

remove方法和poll方法都是删除队列中的第一个元素,代码示例如下:

public static void main(String[] args) {Queue<String> list = new LinkedList<String>();//添加元素list.add("a");list.offer("b");list.offer("c");list.offer("d");System.out.println("元素列表:");//遍历for (String s : list) {System.out.print(s+" ");}System.out.println("\n---------\n调用remove方法");list.remove();//遍历for (String s : list) {System.out.print(s+" ");}System.out.println("\n---------\n调用poll方法");list.poll();//遍历for (String s : list) {System.out.print(s+" ");}}

运行结果如下:

remove方法和poll方法的区别:
当队列为空时 remove() 方法会报 NoSuchElementException 错; 而 poll() 不会奔溃,只会返回 null。

返回队列的第一个元素:

element方法和peek方法都是返回队列中的第一个元素,代码示例如下:

public static void main(String[] args) {Queue<String> list = new LinkedList<String>();//添加元素list.add("a");list.offer("b");list.offer("c");list.offer("d");System.out.println("元素列表:");//遍历for (String s : list) {System.out.print(s+" ");}System.out.println("\n---------\n调用remove方法");list.remove();//遍历for (String s : list) {System.out.print(s+" ");}System.out.println("\n---------\n调用poll方法");list.poll();//遍历for (String s : list) {System.out.print(s+" ");}System.out.println("\n-------------");System.out.println("队列中的第一个元素是:"+list.element());System.out.println("队列中的第一个元素是:"+list.peek());}

运行结果如下:

element方法和peek方法的区别:
和remove方法一样,当队列为空时,调用element方法会抛出异常,而peek则会返回null。

今天的分享就这些,欢迎大家关注公众号雄雄的小课堂获取更多精彩内容

java中的Queue队列的用法相关推荐

  1. Java中栈和队列的用法 Stack And Queue

    Java中栈和队列的用法 栈的实现 使用Java的集合类Stack boolean isEmpty();//判断当前栈是否为空,等价于empty(); synchronized E peek();// ...

  2. 在laravel5 中使用queue队列

    如何在laravel5 中使用queue队列 Laravel Queue是延迟处理应用程序中耗时任务的有效方法.此类任务的示例可能包括每当新用户在您的应用程序中注册或通过社交媒体分享帖子时发送验证电子 ...

  3. deque stack java_一文弄懂java中的Queue家族

    简介 java中Collection集合有三大家族List,Set和Queue.当然Map也算是一种集合类,但Map并不继承Collection接口. List,Set在我们的工作中会经常使用,通常用 ...

  4. JAVA中的延时队列DelayQueue

    Java中的延时队列DelayQueue是基于优先队列PriorityQueue实现的. 注:PriorityQueue是基于堆(Heap)实现的.堆(Heap)在本质上是一个数组. Priority ...

  5. Java中的常用队列

    目录 一.队列的理解 二.Java中队列简述 2.1 Queue队列 2.2 双端队列 2.3 阻塞队列 2.4 非阻塞队列 三.各队列的区别与联系 一.队列的理解 队列是一种由数组和链表作为底层构造 ...

  6. 【Java学习笔记之二十九】Java中的equals和==的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...

  7. Java中PreparedStatement和Statement的用法区别

    Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈   1. PreparedStatement接口继承Sta ...

  8. Java中static的含义和用法

    Java中static的含义和用法 static:静态的,用于修饰成员(成员变量,成员方法); 1.被static所修饰的变量或者方法会储存在数据共享区; 2.被static修饰后的成员变量只有一份! ...

  9. java drawstring字体大小,JAVA中,drawstring 方法的用法,格式是什么啊

    啦啦啦额68的回答 Java中Graphics类的drawString()方法: i)drawString(String str,int x,int y): String str是可以在屏幕上显示的字 ...

最新文章

  1. 只用2页纸,北大数学校友攻破计算机30年难题!过程浅显直白,看懂仅需线性代数基础...
  2. 为什么大型科技公司更会发生人员流失 标准 ceo 软件 技术 图 阅读2479 原文:Why Good People Leave Large Tech Companies 作者:steve
  3. SSM个人遇到的问题汇总——不定期更新
  4. mysql php释放内存_php mysqli_free_result()函数释放结果集
  5. MSN P2P资料转载
  6. 开放性实践活动微信客服_什么是开放组织中的实践社区?
  7. MFC开发IM-第二十一篇、Unicode转成Utf8
  8. 解析docker中的环境变量使用和常见问题解决
  9. busybox linux内核,使用busybox创建精简linux内核实例
  10. 密码键盘介绍三:数据加解密
  11. 数据包络分析方法与maxdea软件_奥林巴斯OmniScan X3探伤仪软件升级,缺陷图像无处藏...
  12. 微信公众号H5开发——JSSDK调用微信接口
  13. matlab光学原理仿真应用衍射,基于Matlab的光学衍射实验仿真
  14. Unity3d场景快速烘焙【2020】
  15. vs将项目发布到服务器,vs2010将项目发布到远程服务器上
  16. 英语3500词(七)dating主题(2022.1.19)
  17. CNS服务器(配合百度直连)游戏修复专栏
  18. AndroidAPP用邮件收集用户上报日志
  19. 使用photoshop以及markman进行快速重构页面的几个步骤
  20. python爬取公众号阅读量_分享一个牛逼的Python项目:公众号文章爬虫

热门文章

  1. C++实现邻接矩阵存储的图及dfs遍历
  2. html坐标轴背景色,CSS 背景(css background)
  3. Python--第4次平时作业
  4. P3250 [HNOI2016]网络(利用堆建线段树 + 树剖)
  5. 【Luogu3768】简单的数学题(莫比乌斯反演/杜教筛/欧拉函数)
  6. P4173 残缺的字符串 FFT匹配含有通配符的字符串
  7. CodeForces 282E Sausage Maximization(trie+xor)
  8. Building Fire Stations
  9. 互达的集合(线段树)
  10. CF1192B Dynamic Diameter(LCT)