Java之Queue源码分析(第一篇:初步认识)

0、基本情况

Queue:位于java.util中的一个interface

作者:Doug Lea (并发大神)

很多具体类都实现了该Queue接口(你也可以去实现Queue接口的具体类)

 * @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

 

1、 接口结构

a、继承了Collection

b、一个泛型接口

c、自己本身有6个抽象方法(没统计继承的Collection的抽象方法)

package java.util;

public interface Queue<E> extends Collection<E> {
    boolean add(E var1);

    boolean offer(E var1);

    E remove();

    E poll();

    E element();

    E peek();
}

 

2、添加方法:add(E e)

boolean add(E e); //添加元素的方法

a、参数e为泛型类型(由你指定)

b、返回值建议:添加成功返回true、添加失败返回false

c、实现方法时,建议可以抛出的异常有4个

第一:队列空间不足时(有限队列,底层采用数组),如果元素不能添加进来(因为容量有限)则可以抛出IllegalStateException
第二:限制元素类型时,添加的元素,如果类型不对,你可以抛出这个ClassCastException(貌似泛型有了,这个就不需要了,大佬细腻)
第三:限制null元素,如果添加的元素为null,且队列如果不支持null的话,你可以抛出NullPointerException
第四:限制元素对象的属性,如果此元素的某些属性阻止将其添加到此队列中,你可以给它抛出一个IllegalArgumentException
 

3、添加方法:offer(E e)

boolean offer(E e);

a、e为添加的元素

b、容量限制容错:该方法在限制容量的队列中,也许更好使,因为不会因为容量满了就非得抛出一个异常

c、返回值建议:添加元素到队尾,如果成功添加返回true,否则返回false

d、异常建议3个

第一:可以规定添加元素的类型,如果类型不对,你可以抛出ClassCastException

第二:如果指定的元素为null或者不允许添加null元素,你可以抛出NullPointerException

第三:如果元素对象中的一些属性不适合添加到队列中的话,你可以抛出IllegalArgumentException

 

4、删除方法:E remove()

E remove(); 

a、返回值:被删除的队头元素

b、异常建议1个

第一:如果如果队列是空的,你可以抛出这个异常NoSuchElementException
    

5、删除方法: E poll()

 E poll();

a、返回值:被删除的队头元素

b、如果队列是空的,返回值为null

 

6、访问队头:E element()

 E element()

a、返回值:队头元素

b、异常建议

第一:如果队列为空,会抛出NoSuchElementException

 

7、 访问队头:E peek()
a、返回值:队头元素

b、如果队列为空,返回值为null
 

8、 以上就是Doug Lea (并发大神)对抽象方法的规范(他把这些都写在代码的注释中了,我单独拿出来并翻译)

Doug Lea大神代码写的超级严谨,在Queue接口中给出了大量的建议规范,牛逼!!!

Doug Lea,最近看并发的代码,到处都是大神的手笔!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值