Java 集合系列(11): Queue接口源码

标签: Queue接口 Java 集合
2人阅读 评论(0) 收藏 举报
分类:
package java.util;

/**
 * 设计用于在处理之前保留元素的集合。 除了基本的Collection操作之外,队列还提供额外的插入,提取和检查操作。 
 * 这些方法中的每一种都有两种形式:如果操作失败,则抛出一个异常,另一种返回一个特殊值( null或false ,具体取决于操作)。 
 * 插入操作的后一种形式专门设计用于容量限制的Queue实现; 在大多数实现中,插入操作不能失败。 
 * Summary of Queue methods Throws exception Returns special value Insert add(e) offer(e) Remove remove() poll() 
 * Examine 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插入到Queue ,因为null也被poll方法用作特殊的返回值,以指示队列不包含元素。 
 * Queue实现通常不定义基于元素的方法equals和hashCode的方法,而是从类别Object继承基于标识的版本,因为基于元素的等式并不总是很好地定义了具有相同元素但不同的排序属性的队列。 
 *
 * @see java.util.Collection
 * @see LinkedList
 * @see PriorityQueue
 * @see java.util.concurrent.LinkedBlockingQueue
 * @see java.util.concurrent.BlockingQueue
 * @see java.util.concurrent.ArrayBlockingQueue
 * @see java.util.concurrent.LinkedBlockingQueue
 * @see java.util.concurrent.PriorityBlockingQueue
 * @since 1.5
 * @author Doug Lea
 * @param <E> the type of elements held in this collection
 */
public interface Queue<E> extends Collection<E> {
	
    /**
     *将指定的元素插入到此队列中,如果可以立即执行此操作,而不会违反容量限制, true在成功后
     *返回 IllegalStateException如果当前没有可用空间,则抛出IllegalStateException。 
     */
    boolean add(E e);

    /**
     *如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。 
     */
    boolean offer(E e);

    /**
     * 检索并删除此队列的头。 
     * @return 返回队列的头元素
     * @throws NoSuchElementException 如果是空的抛异常
     */
    E remove();

    /**
     * 检索并删除此队列的头。 
     *
     * @return 返回队列的头元素, or 如果是空则返回null
     */
    E poll();

    /**
     * 检索,但不删除此队列的头。 
     *
     * @return 返回队列的头元素
     * @throws NoSuchElementException 如果是空的抛异常
     */
    E element();

    /**
     * 检索,但不删除此队列的头。 
     *
     * @return 返回队列的头元素, or 如果是空则返回null
     */
    E peek();
}
查看评论

七,Java集合类(5)——Queue接口及其实现类

Queue集合Queue用于模拟队列数据结构,采用“先进先出”的方式。Queue接口是继承了Collection的接口,而Queue接口下面的实现类是PriorityQueue,继承的接口是Deque...
  • u010871004
  • u010871004
  • 2016-09-21 09:03:41
  • 6873

JAVA Queue源码分析 java1.8

JAVA Queue第一篇博客,希望以后每天坚持 目录: 1.Queue接口 2.Java中Queue接口方法 3.Queue的子类PriorityQueue分析 4.总结1.Queue接口...
  • youyou1543724847
  • youyou1543724847
  • 2016-08-09 17:50:32
  • 1692

集合框架之Queue接口

在处理元素前用于保存元素的collection。除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值...
  • u012152619
  • u012152619
  • 2015-01-29 08:34:32
  • 1951

java集合(四)——集合 Queue

java集合(四)——集合 Queue原博地址今天我们来介绍下集合Queue中的几个重要的实现类。关于集合Queue中的内容就比较少了。主要是针对队列这种数据结构的使用来介绍Queue中的实现类。Qu...
  • sinat_35209943
  • sinat_35209943
  • 2017-08-13 14:18:34
  • 97

【Java集合源码剖析】Java集合框架

Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭...
  • mmc_maodun
  • mmc_maodun
  • 2014-06-29 12:48:55
  • 20017

Java 集合系列10之 HashMap源码解析

一、HashMap概述 二、HashMap的数据结构 三、HashMap源码分析      1、关键属性      2、构造方法      3、存储数据      4、调整大小      5、数据读...
  • wangjun_818
  • wangjun_818
  • 2017-07-18 16:00:25
  • 187

Java集合(三):Queue队列

前面介绍了列表,其中包括List接口和LinkedList链表和ArrayList数组列表。这节介绍一个也很常见的数据结构:队列。 我们知道,队列是一个可以从尾部添加新元素、从头部删除元素的数据结构。...
  • u012877472
  • u012877472
  • 2016-04-13 17:03:38
  • 6527

JAVA集合类--几种特殊的Queue

一、优先级队列 百度百科定义: 优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。 维基百科的定义也可以看看:https://en.wikipedia.or...
  • beautiful_face
  • beautiful_face
  • 2017-08-04 20:42:21
  • 211

Java 集合深入理解(9):Queue 队列

什么是队列队列是数据结构中比较重要的一种类型,它支持 FIFO,尾部添加、头部删除(先进队列的元素先出队列),跟我们生活中的排队类似。队列有两种: 单队列 循环队列 单队列就是常见的队列, 每次添加元...
  • u011240877
  • u011240877
  • 2016-10-19 16:45:19
  • 10584

Java类集框架——LinkedList子类与Queue接口

学习目标: 掌握LinkedList与List接口的关系。 掌握Queue接口的作用。 LinkedList子类与Queue接口 LinkedList表示的是一个链表的操作类,此类的定义如下:...
  • u013087513
  • u013087513
  • 2016-08-16 14:31:43
  • 1604
    个人资料
    持之以恒
    等级:
    访问量: 7220
    积分: 782
    排名: 6万+
    轻松一下
    文章存档
    最新评论