`
sgl124764903
  • 浏览: 174587 次
  • 性别: Icon_minigender_1
  • 来自: 邯郸
社区版块
存档分类
最新评论

queue

阅读更多

java.util
接口 Queue<E>

类型参数:
E - collection 中所保存元素的类型。
所有超级接口:
Collection<E>, Iterable<E>
所有已知子接口:
BlockingDeque<E>, BlockingQueue<E>, Deque<E>
所有已知实现类:
AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, PriorityBlockingQueue, PriorityQueue, SynchronousQueue

public interface Queue<E>
extends Collection<E>

在处理元素前用于保存元素的 collection。除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(nullfalse,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不会失败。

 

  抛出异常 返回特殊值
插入 add(e) offer(e)
移除 remove() poll()
检查 element() peek()

队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的 都是调用 remove()poll() 所移除的元素。在 FIFO 队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个 Queue 实现必须指定其顺序属性。

如果可能,offer 方法可插入一个元素,否则返回 false。这与 Collection.add 方法不同,该方法只能通过抛出未经检查的异常使添加元素失败。offer 方法设计用于正常的失败情况,而不是出现异常的情况,例如在容量固定(有界)的队列中。

remove()poll() 方法可移除和返回队列的头。到底从队列中移除哪个元素是队列排序策略的功能,而该策略在各种实现中是不同的。remove()poll() 方法仅在队列为空时其行为有所不同:remove() 方法抛出一个异常,而 poll() 方法则返回 null

element()peek() 返回,但不移除,队列的头。

Queue 接口并未定义阻塞队列的方法,而这在并发编程中是很常见的。BlockingQueue 接口定义了那些等待元素出现或等待队列中有可用空间的方法,这些方法扩展了此接口。

Queue 实现通常不允许插入 null 元素,尽管某些实现(如 LinkedList)并不禁止插入 null。即使在允许 null 的实现中,也不应该将 null 插入到 Queue 中,因为 null 也用作 poll 方法的一个特殊返回值,表明队列不包含元素。

Queue 实现通常未定义 equalshashCode 方法的基于元素的版本,而是从 Object 类继承了基于身份的版本,因为对于具有相同元素但有不同排序属性的队列而言,基于元素的相等性并非总是定义良好的。

此接口是 Java Collections Framework 的成员。

 

 

从以下版本开始:
1.5
另请参见:
Collection, LinkedList, PriorityQueue, LinkedBlockingQueue, BlockingQueue, ArrayBlockingQueue, LinkedBlockingQueue, PriorityBlockingQueue

<!-- ========== METHOD SUMMARY =========== --><!-- -->

方法摘要
 boolean add(E e)
          将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException
 E element()
          获取,但是不移除此队列的头。
 boolean offer(E e)
          将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。
 E peek()
          获取但不移除此队列的头;如果此队列为空,则返回 null
 E poll()
          获取并移除此队列的头,如果此队列为空,则返回 null
 E remove()
          获取并移除此队列的头。

 <!-- -->

从接口 java.util.Collection 继承的方法
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray

 

<!-- ============ METHOD DETAIL ========== --><!-- -->

方法详细信息

<!-- --><!-- -->

add

boolean add(E e)
将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException

 

指定者:
接口 Collection<E> 中的 add
参数:
e - 要添加的元素
返回:
true(根据 Collection.add(E) 的规定)
抛出:
IllegalStateException - 如果由于容量的限制此时不能添加该元素
ClassCastException - 如果指定元素的类不允许将其添加到此队列
NullPointerException - 如果指定元素为 null 并且此队列不允许 null 元素
IllegalArgumentException - 如果此元素的某些属性不允许将其添加到此队列

<!-- --><!-- -->

offer

boolean offer(E e)
将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。

 

参数:
e - 要添加的元素
返回:
如果该元素已添加到此队列,则返回 true;否则返回 false
抛出:
ClassCastException - 如果指定元素的类不允许将其添加到此队列
NullPointerException - 如果指定元素为 null 并且此队列不允许 null 元素
IllegalArgumentException - 如果此元素的某些属性不允许将其添加到此队列

<!-- -->

remove

E remove()
获取并移除此队列的头。此方法与 poll 唯一的不同在于:此队列为空时将抛出一个异常。

 

返回:
队列的头
抛出:
NoSuchElementException - 如果此队列为空

<!-- -->

poll

E poll()
获取并移除此队列的头,如果此队列为空,则返回 null

 

返回:
队列的头,如果此队列为空,则返回 null

<!-- -->

element

E element()
获取,但是不移除此队列的头。此方法与 peek 唯一的不同在于:此队列为空时将抛出一个异常。

 

返回:
队列的头
抛出:
NoSuchElementException - 如果此队列为空

<!-- -->

peek

E peek()
获取但不移除此队列的头;如果此队列为空,则返回 null

 

返回:
此队列的头;如果此队列为空,则返回 null
<!-- ========= END OF CLASS DATA ========= -->
分享到:
评论
1 楼 永远永远 2011-11-02  
怎么给Queue中的元素排序?

相关推荐

    C语言头文件 QUEUE.H

    C语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言...

    C# MessageQueue示例

    MessageQueue,又称消息队列,是C#中处理异步通信和解耦组件的重要技术。它允许应用程序之间通过消息传递数据,而无需彼此直接交互。下面将详细介绍C#中的MessageQueue以及如何使用它来发送和接收消息。 1. **...

    thinkphp5.0.24+queue 队列信息完整源码

    《ThinkPHP5.0.24与Queue队列技术详解》 在PHP开发领域,ThinkPHP框架因其简洁高效的特性而广受欢迎,特别是在企业级应用中,其提供的队列功能能够帮助开发者实现异步任务处理,提高系统性能。本文将详细探讨在...

    活用Android的Message Queue

    在Android开发中,Message Queue是一种重要的机制,用于在不同线程间进行异步通信和任务调度。理解并熟练运用Message Queue、Looper和Handler是构建高效、响应性良好的Android应用的关键。 1. **Message Queue...

    Queue与Topic的比较

    Queue 与 Topic 的比较 Queue 和 Topic 是 JMS(Java Message Service)中两种基本的消息模式,分别对应 Point-to-Point 和 Publish/Subscribe 模式。 Queue 模式 在 Queue 模式中,一条消息仅能被一个消费者...

    tp5.1消息队列 think-queue

    标题 "tp5.1消息队列 think-queue" 指的是使用ThinkPHP5.1框架集成的消息队列组件——think-queue。消息队列在软件开发中扮演着重要角色,它允许应用程序异步处理耗时任务,提高系统响应速度和整体性能。think-queue...

    Unity3d 队列 方法 Queue

    ### Unity3D中的队列(Queue)方法解析与应用实例 #### 一、概述 在Unity3D开发中,队列是一种非常实用的数据结构,它遵循先进先出(First In First Out, FIFO)的原则,即最先加入队列的元素会最先被移除。队列在...

    消息队列 Queue与Topic区别.docx

    ### 消息队列Queue与Topic的区别 #### 一、概念概述 消息队列(Message Queue)是一种应用程序间通信机制,允许程序之间通过发送和接收消息进行通信,而不必直接建立连接。它提供了异步处理机制,使得消息的发送者...

    C#队列Queue多线程用法实例

    在C#编程中,队列(Queue)是一种线性数据结构,它遵循“先进先出”(First In First Out, FIFO)的原则。队列在多线程环境下常常用于任务调度、消息传递等场景,因为它们能有效地管理和同步数据访问。本实例将详细...

    freeswitch动态获取queue队列.doc

    在FreeSWITCH中,`queue`队列是用于处理呼叫分配的重要组件,它允许系统根据预定义的策略将呼叫分发给坐席或代理。动态获取`queue`队列涉及实时从数据库中读取队列配置,而不是静态地在配置文件中定义。以下是关于这...

    前端开源库-promise-queue

    Promise Queue 是一个专门用于解决此类问题的开源库,它允许我们以有序、控制流的方式执行基于Promise的异步任务。这个库的核心理念是通过队列机制限制同时运行的任务数量,从而避免系统资源过度消耗,提高应用性能...

    解决Can't locate ThreadQueue.pm

    标题 "解决Can't locate ThreadQueue.pm" 指出的问题是,在尝试运行一个Perl脚本时,系统无法找到模块“ThreadQueue”。这个问题通常出现在你试图使用一个依赖于ThreadQueue模块的Perl程序,但该模块尚未在你的Perl...

    C++ Queue(带上限的)

    在C++编程语言中,`Queue`是一种常用的数据结构,它遵循“先进先出”(First In First Out, FIFO)的原则。通常,C++标准库提供了`&lt;queue&gt;`头文件来实现基本的队列操作,但这个标准队列并没有设置上限。在某些特定...

    前端开源库-promise-queue-plus

    "Promise Queue Plus" 就是一个专门为解决此类问题设计的开源库,它基于Promise实现,提供了超时、重试等高级特性,极大地增强了异步任务的处理能力。 Promise 是JavaScript中的一个关键特性,用于处理异步操作,...

    kodi-sync-queue_6.0.0.0.zip

    《Kodi-Sync-Queue:Jellyfin的增强利器》 Kodi-Sync-Queue,版本6.0.0.0,是一个专为Jellyfin设计的官方插件,其核心功能是为用户提供一个同步播放队列的工具,极大地提升了Jellyfin媒体中心的用户体验。在了解这...

    Python3 queue队列模块详细介绍

    Python3的`queue`模块是线程安全的数据结构,它实现了多线程环境下的队列操作,主要用于在并发环境中管理任务和数据交换。队列在计算机科学中是一种基础数据结构,遵循特定的出队和入队规则,如先进先出(FIFO)、...

    jQuery中queue()方法用法实例

    jQuery中的queue()方法是一个非常重要且实用的功能,它允许开发者对一个元素上运行的函数队列进行操作,无论是查看还是修改这些队列。接下来,我们将深入探讨queue()方法的功能、定义及使用技巧,并结合实例来帮助...

    C#使用队列(Queue)解决简单的并发问题

    在本文中,我们将深入探讨如何使用C#中的队列数据结构(Queue)来解决简单的并发问题。队列是一种线性数据结构,遵循先进先出(FIFO)的原则,即第一个进入的元素也将是第一个离开的元素。这种特性使得队列在处理...

    C#对Windows Queue的完美操作

    在本文中,我们将深入探讨如何使用C#编程语言与Windows队列(Windows Queue)进行交互。Windows队列是操作系统提供的一种服务,用于在应用程序之间安全地传输数据,尤其是在多线程和异步处理环境中。在“日本中央...

    Handler Looper MessageQueue 源码解析

    在Android系统中,Handler、Looper和MessageQueue是实现线程间通信的核心组件,它们共同构建了一个消息处理机制。本文将深入解析这三者的源码,帮助你理解它们的工作原理,并教你如何手写一套自己的Handler系统。 ...

Global site tag (gtag.js) - Google Analytics