java集合系列09 Queue
来源:互联网 发布:cab软件下载 编辑:程序博客网 时间:2024/06/11 12:33
前言
是几篇博客我们一步步分析Collection AbstractCollection List AbstractList..等最后分析了我们最常用的ArrayList类。
以后的几篇文章可能要着重介绍LinkedList了
我们先来看一看UML图
可以看到好多接口和抽象类我们已经介绍过了
新面孔也可能是Queue Deque AbstractSequentialList
Queue
文档介绍
保存元素用来优先处理的集合,除了基本的集合操作,队列提供额外的插入,提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,依赖于具体的操作)。插入操作的后一种形式是用于专门为有容量限制的Queue实现设计的;在大多数实现中,插入操作不会失败
队列通常(但并非一定)以FIFO(先进先出)的方式排序各个元素。不过优先级队列和LIFO队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方法,队列的头都是调用remove()或poll()所移除的元素。在FIFO队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个Queue实现必须指定其顺序属性。
如果可能,offer方法可插入一个元素,否则返回false。这与Collection.add方法不同,该方法只能通过抛出未经检查的异常使元素失败。offer方法设计用于正常的失败情况,而不是出现异常的情况。例如在容量固定(有界)的队列中。
remove()和poll()方法可移除和返回队列的头。到底从列表中移除哪个元素是队列排序策略的功能,而该策略在各种实现中是不同的。remove()和poll()方法仅在队列为空时其行为有所不同:remove()方法抛出一个异常,而poll()方法返回null
element()和peek()返回,但不移除,队列的头。
Queue实现通常不允许插入null元素,尽管某些实现(如LinkedList)并不禁止插入null。即使在允许null的实现中,也不应该将null插入到Queue中,因为null也用作poll方法的一个特殊返回值,表明队列不包含元素。
Queue 实现通常未定义 equals 和 hashCode 方法的基于元素的版本,而是从 Object 类继承了基于身份的版本,因为对于具有相同元素但有不同排序属性的队列而言,基于元素的相等性并非总是定义良好的。
有人觉得看这么冗长的文档很头痛,但我还是提倡大家看文档,这样才能理解接口设计的思想,最优的用法
源码:
public interface Queue<E> extends Collection<E>{ boolean add(E e); boolean offer(E e); E remove(); E poll(); E element(); E peek();
- java集合系列09 Queue
- Java的Queue集合
- java的Queue集合
- Java集合之Queue
- java集合之Queue
- Java集合:队列: Queue
- Java 集合 Queue
- java集合类Queue
- java集合--Queue用法
- Java集合之Queue
- java集合--Queue用法
- Java queue系列
- Java集合(三):Queue队列
- [疯狂Java]集合:Queue、PriorityQueue
- JAVA基础知识之Queue集合
- Java集合(三):Queue队列
- Java集合---Queue(队列)
- java集合(四)——集合 Queue
- UML类图与类的关系详解
- PHP GD库笔记
- 使用php开发停车场系统,智能停车系统,php程序源码
- c/c++实现模拟洗牌发牌
- 二叉树的建立与遍历
- java集合系列09 Queue
- hdoj-Oil Deposits
- mui开发APP教程之使用选项卡跳转子页面
- TREAP 模板(新)
- Maven搭建SSM项目
- Keras中几个重要函数用法
- 转自一个安卓技术总监的思考问题高度
- php,微信公众号群发系统,微信公众号管理系统,微信公众号素材粉丝管理系统,微信公众号智能定时任务群发
- android 判断网络是否可用