队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

以下实例演示了队列(Queue)的用法:

import java.util.LinkedList;
import java.util.Queue;public class Main {public static void main(String[] args) {//add()和remove()方法在失败的时候会抛出异常(不推荐)Queue<String> queue = new LinkedList<String>();//添加元素queue.offer("a");queue.offer("b");queue.offer("c");queue.offer("d");queue.offer("e");for(String q : queue){System.out.println(q);}System.out.println("===");System.out.println("poll="+queue.poll()); //返回第一个元素,并在队列中删除for(String q : queue){System.out.println(q);}System.out.println("===");System.out.println("element="+queue.element()); //返回第一个元素 for(String q : queue){System.out.println(q);}System.out.println("===");System.out.println("peek="+queue.peek()); //返回第一个元素 for(String q : queue){System.out.println(q);}}
}
以上代码运行输出结果为:
a
b
c
d
e
===
poll=a
b
c
d
e
===
element=b
b
c
d
e
===
peek=b
b
c
d
e

Queue  概念

队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可 以定期地把中间结果存到阻塞队列中而其他工作者线线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将等待第二个线程集赶上来。下表显示了jdk1.5中的阻塞队列的操作:add        增加一个元索                     如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove   移除并返回队列头部的元素    如果队列为空,则抛出一个NoSuchElementException异常
element  返回队列头部的元素             如果队列为空,则抛出一个NoSuchElementException异常
offer       添加一个元素并返回true       如果队列已满,则返回false
poll         移除并返问队列头部的元素    如果队列为空,则返回null
peek       返回队列头部的元素             如果队列为空,则返回null
put         添加一个元素                      如果队列满,则阻塞
take        移除并返回队列头部的元素     如果队列为空,则阻塞remove、element、offer 、poll、peek 其实是属于Queue接口。 

Queue 队列的用法相关推荐

  1. java中的Queue队列的用法

    大家好,欢迎来到雄雄的小课堂,今天给大家分享的是"java中的Queue队列的用法" 前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用 ...

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

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

  3. RabbitMQ高可用--Quorum Queue(仲裁队列)的用法

    原文网址:RabbitMQ高可用--Quorum Queue(仲裁队列)的用法_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍RabbitMQ的Quorum Queue(仲裁队列)的用法. 官 ...

  4. python 进程间通信效率_Python进程间通信 multiProcessing Queue队列实现详解

    一.进程间通信 IPC(Inter-Process Communication) IPC机制:实现进程之间通讯 管道:pipe 基于共享的内存空间 队列:pipe+锁的概念--->queue 二 ...

  5. 在laravel5 中使用queue队列

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

  6. python 队列实现_Python Queue队列实现线程通信

    queue 模块下提供了几个阻塞队列,这些队列主要用于实现线程通信.在 queue 模块下主要提供了三个类,分别代表三种队列,它们的主要区别就在于进队列.出队列的不同. 关于这三个队列类的简单介绍如下 ...

  7. python 优先队列_Python Queue队列实现线程通信

    queue 模块下提供了几个阻塞队列,这些队列主要用于实现线程通信.在 queue 模块下主要提供了三个类,分别代表三种队列,它们的主要区别就在于进队列.出队列的不同.关于这三个队列类的简单介绍如下: ...

  8. C++queue队列与stack栈

    queue队列: 调用头文件: #include<queue> using namespace std; 详细用法(部分): queue<Type> k;      ----- ...

  9. C++之queue和dequeu用法

    一.queue介绍与用法  1.queue.cpp le Edit Options Buffers Tools C++ Help #include <iostream> #include ...

最新文章

  1. 程序员如何打破35岁魔咒
  2. Ardino基础教程 19_舵机控制
  3. 微信小程序访问云数据库
  4. Java操作控制台的命令
  5. HDU 2204 Eddy's爱好(容斥原理)
  6. eclipse黑色主题
  7. 学习IOS 开发需要什么?
  8. Feign-手动创建FeignClient
  9. 《Hadoop权威指南》知识点整理5
  10. 基于Proteus仿真8253音乐发生器
  11. Premiere Pro之经典类转场
  12. 【Base64是什么?】
  13. 微信小程序 教你如何复制页面路径 (以及京东、虎牙、苏宁、拼多多、等大厂的加密路径详解)(多图!!!)
  14. matlab中m_map工具箱绘制大圆航线
  15. 【Java程序设计】Java上机实验(二)
  16. 应用案例 | 2009 款北京现代伊兰特车换挡冲击故障诊断
  17. Tomcat:-Djava.net.preferIPv4Stack=true只支持ipv4
  18. ENVI中操作出现Error :array dimensions must be greater than 0错误的解决方法
  19. Linux开发工具(3)——gcc/g++
  20. 支付宝钱包系统架构内部剖析

热门文章

  1. Endnote技巧:解决中英参考文献混排问题,附国标文件
  2. codeup 1943进制转换
  3. 问题 | 执行pip install --upgrade --ignore-installed tensorflow出现Cannot open\Scripts\pip-script.py
  4. 北斗导航 | 卫星导航基础知识(坐标系)
  5. 老生常谈,正确使用memset
  6. c++ 中pair类模板的用法详解
  7. xib 设置阴影_使用“IBInspectable”XIB设置圆角、边框、阴影
  8. 怎么给linux分区,如何合理地给你的Linux分区
  9. kubectl 创建pvc_动态挂载云盘(PVC)
  10. 第四范式受邀参加APEC“人工智能创新应用发展国际论坛”