Queue
来源:互联网 发布:ed2k樱井知香 喷泉 编辑:程序博客网 时间:2024/05/16 07:41
队列是元素在处理之前暂存的地方。除了基本的Collection
操作,队列还有自己的插入、删除和监测操作。下面是Queue
接口:
public interface Queue<E> extends Collection<E> { E element(); boolean offer(E e); E peek(); E poll(); E remove();}
队列的方法分成了两大类:(1). 如果操作失败,抛出异常(2).如果操作失败,要么返回空要么返回 false。下表详细描述了Queue
的方法:
队列接口的结构
队列通常都是(但不绝对)先进先出(FIFO)的方式。 特殊的队列就是优先级队列,它的元素是根据元素的值排列的(具体的,可以参看对象排序的章节)。无论哪种排列方式, 只要调用方法remove
或者poll
,队列头部的元素就会被移除。在一个先进先出的队列里,所有的新元素都会被添加到队尾,其它的队列可能用不同的放置规则。每个队列的实现都必须指明排序属性。
你是可以限定一个队列容纳的元素个数的,这样的队列也叫做有边界的队列。有一些在包java.util.concurrent
实现的队列是有边界, 在包java.util
下的都是没有边界的。
add
方法是从Collection
继承来的,用来添加元素,如果添加时超过了队列的上限,会抛出IllegalStateException
。offer
方法设计的本意是只给有边界的队列用的,和add
方法不同的是, 如果添加元素失败,它会返回false
而不是抛异常。
remove
和poll
方法都是移除队列头部的元素并且将它返回, 至于到底哪一个元素被移除掉(或者到底哪一个元素现在在队列头部)和队列的排序策略有关。 只有当队列是空的时候,这两个方法的行为才不相同。在空的情况下, remove
抛出NoSuchElementException
异常,而poll
直接返回空。
element
和peek
方法返回但是并不移除队列头部的元素。那么他们之间的不同和remove
poll
非常相像。 当队列是空的时候, element
抛出NoSuchElementException
异常,而peek
直接返回空。
队列的实现一般来说是不允许插入空元素的,然而LinkedList
是一个例外,它后来改进并且实现了队列接口。因为历史原因(这谁都说不清了),它是允许空元素的。但是你最好别利用这一点, 因为空是poll
和 peek
方法的特殊返回值。
原文见:
http://docs.oracle.com/javase/tutorial/collections/interfaces/queue.html
- Queue
- queue
- Queue
- QUEUE ~
- queue
- queue
- queue
- queue
- queue
- queue
- Queue
- Queue
- queue
- queue
- Queue
- Queue
- queue
- Queue
- C指针编程之道(四)- 指向文件类型的指针
- XSS测试
- device_create
- 最小边集覆盖
- Linux(RedHat)中service命令和/etc/init.d/的关系
- Queue
- 基于MTK6755平台(Android6.0)添加新按键
- 缓存-生成缓存,读取缓存,删除缓存的类
- python笔记(九)
- mysql日期时间操作
- 参加第二届中国网络营销行业大会会议记录
- mfc bmp资源 导入 提示 大于256种颜色
- C指针编程之道(五)- 排序算法
- HashMap是如何组织数据的