java中的AbstractQueue

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

一、概述

类结构:

java.lang.Object
  java.util.AbstractCollection<E>
      java.util.AbstractQueue<E>

类型参数:

E - 此 collection 中所保存元素的类型声明:public abstract class AbstractQueue<E> extends AbstractCollection<E> implements Queue<E>

此类提供某些 Queue 操作的骨干实现。此类中的实现适用于基本实现 允许包含 null 元素时。addremoveelement 方法分别基于 offerpoll peek 方法,但是它们通过抛出异常而不是返回 false 或 null 来指示失败。 

扩展此类的 Queue 实现至少必须定义一个不允许插入 null 元素的 Queue.offer(E) 方法,该方法以及 Queue.peek()Queue.poll()Collection.size()Collection.iterator() 都支持 Iterator.remove() 方法。通常还要重写其他方法。如果无法满足这些要求,那么可以转而考虑为 AbstractCollection 创建子类。

此类是 Java Collections Framework 的成员。 

二、构造方法

protected AbstractQueue()  子类使用的构造方法。
 
三、方法详细
1、public boolean add(E e)  
将指定的元素插入到此队列中(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用空间,则抛出 IllegalStateException。
如果 offer 成功,则此实现返回 true,否则抛出 IllegalStateException。
 

指定者:

接口 Collection<E> 中的 add

指定者:

接口 Queue<E> 中的 add

覆盖:

AbstractCollection<E> 中的 add

参数:

e - 要添加的元素

返回:

true(根据 Collection.add(E) 的规定)

抛出:

IllegalStateException - 如果此时由于容量限制不能添加元素

ClassCastException - 如果指定元素的类不允许将该元素添加到此队列中

NullPointerException - 如果指定元素为 null 并且此队列不允许 null 元素

IllegalArgumentException - 如果此元素的某些属性不允许将该元素添加到此队列中

2、public E remove()

 

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

除非队列为空,否则此实现返回 poll 的结果。

指定者:

接口 Queue<E> 中的 remove

返回:

此队列的头

抛出:

NoSuchElementException - 如果此队列为空

3、public E element() 获取但不移除此队列的头。此方法与 peek 唯一的不同在于:此队列为空时将抛出一个异常。除非队列为空,否则此实现返回 peek 的结果。

 

指定者:

接口 Queue<E> 中的 element

返回:

此队列的头

抛出:

NoSuchElementException - 如果此队列为空

4、public void clear() 移除此队列中的所有元素。此调用返回后,队列将为空。此实现重复调用 poll,直到它返回 null 为止。

 

指定者:

接口 Collection<E> 中的 clear

覆盖:

AbstractCollection<E> 中的 clear

5、public boolean addAll(Collection<? extends E> c)
将指定 collection 中的所有元素都添加到此队列中。如果试图将某一队列 addAll 到该队列本身中,则会导致 IllegalArgumentException。此外,如果正在进行此操作时修改指定的 collection,则此操作的行为是不确定的。
此实现在指定的 collection 上进行迭代,并依次将迭代器返回的每一个元素添加到此队列中。在试图添加某一元素(尤其是 null 元素)时如果遇到了运行时异常,则可能导致在抛出相关异常时只成功地添加了某些元素。 
 

指定者:

接口 Collection<E> 中的 addAll

覆盖:

AbstractCollection<E> 中的 addAll

参数:

c - 包含要添加到此队列的元素的 collection

返回:

如果此队列由于调用而发生更改,则返回 true

抛出:

ClassCastException - 如果指定 collection 元素的类不允许将该元素添加到此队列中

NullPointerException - 如果指定 collection 包含一个 null 元素并且此队列不允许 null 元素,或者指定 collection 为 null

IllegalArgumentException - 如果指定 collection 元素的某些属性不允许将该元素添加到此队列中,或者指定 collection 是此队列

IllegalStateException - 如果此时由于插入限制无法添加所有元素

 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值