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,最近看并发的代码,到处都是大神的手笔!!