队列详细方法

Queue接口是Java集合框架的一部分,用于保留元素直到处理。它提供了添加、删除和检查元素的方法,如offer()用于插入而不抛出异常,remove()和poll()用于删除头部元素,element()和peek()用于查看头部元素。队列通常按FIFO或LIFO顺序排列元素,但也有优先级队列。在并发编程中,BlockingQueue接口扩展了Queue并添加了阻塞操作。
摘要由CSDN通过智能技术生成
Interface Queue<E>

参数类型 
E - 保存在此集合中的元素的类型 
All Superinterfaces: 
Collection <E>, Iterable <E> 
All Known Subinterfaces: 
BlockingDeque <E>, BlockingQueue <E>, Deque <E>, TransferQueue <E> 
所有已知实现类: 
AbstractQueue , ArrayBlockingQueue , ArrayDeque , ConcurrentLinkedDeque , ConcurrentLinkedQueue , DelayQueue , LinkedBlockingDeque , LinkedBlockingQueue , LinkedList , LinkedTransferQueue , PriorityBlockingQueue , PriorityQueue , SynchronousQueue 

--------------------------------------------------------------------------------


public interface Queue<E>
extends Collection<E>设计用于在处理之前保留元素的集合。 除了基本的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继承基于标识的版本,因为基于元素的等式并不总是很好地定义了具有相同元素但不同的排序属性的队列。 

此接口是成员Java Collections Framework 。 

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

方法摘要
 
          所有方法  
          接口方法  
          抽象方法  
          Modifier and Type Method and Description 
boolean add(E e) 
将指定的元素插入到此队列中,如果可以立即执行此操作,而不会违反容量限制, true在成功后返回 IllegalStateException如果当前没有可用空间,则抛出IllegalStateException。  
E element() 
检索,但不删除,这个队列的头。  
boolean offer(E e) 
如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。  
E peek() 
检索但不删除此队列的头,如果此队列为空,则返回 null 。  
E poll() 
检索并删除此队列的头,如果此队列为空,则返回 null 。  
E remove() 
检索并删除此队列的头。  

Methods inherited from interface java.util.Collection
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray 
Methods inherited from interface java.lang.Iterable
forEach 




方法详细信息
add
boolean add(E e)将指定的元素插入到此队列中,如果可以立即执行此操作而不违反容量限制, true在成功后返回 IllegalStateException如果当前没有可用空间,则抛出IllegalStateException。 
Specified by: 
add在界面 Collection<E> 
参数 
e - 要添加的元素 
结果 
true (由 Collection.add(E)指定 ) 
异常 
IllegalStateException - 如果由于容量限制,此时无法添加该元素 
ClassCastException - 如果指定元素的类阻止将其添加到此队列中 
NullPointerException - 如果指定的元素为空,并且该队列不允许空元素 
IllegalArgumentException - 如果此元素的某些属性阻止将其添加到此队列 



offer
boolean offer(E e)如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。 当使用容量限制队列时,此方法通常优于add(E) ,这可能无法仅通过抛出异常来插入元素。 
参数 
e - 要添加的元素 
结果 
true如果元素被添加到这个队列,否则 false 
异常 
ClassCastException - 如果指定元素的类阻止将其添加到此队列中 
NullPointerException - 如果指定的元素为空,并且该队列不允许空元素 
IllegalArgumentException - 如果此元素的某些属性阻止将其添加到此队列 


remove
E remove()检索并删除此队列的头。 此方法与poll不同之处在于,如果此队列为空,它将抛出异常。 
结果 
这个队列的头 
异常 
NoSuchElementException - 如果这个队列是空的 


poll
E poll()检索并删除此队列的头,如果此队列为空,则返回 null 。 
结果 
该队列的头,或 null如果这个队列是空的 


element
E element()检索,但不删除,这个队列的头。 此方法与peek的不同之处在于,如果此队列为空,它将抛出异常。 
结果 
这个队列的头 
异常 
NoSuchElementException - 如果这个队列是空的 


peek
E peek()检索但不删除此队列的头部,如果此队列为空,则返回 null 。 
结果 
the head of this queue, or null if this queue is empty 

最近在看二叉树的算法实现,很多要借用队列实现,队列的先进先出,其中最重要的offer(),将元素插入队列,poll()取出队列的头部并且删除该头部,peek()取出队列的头部但不删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值