3.14 JDK源码阅读之Queue

 

Queue

     Queue本身是一种先入先出的模型(FIFO),和我们日常生活中的排队模型很类似。根据不同的实现,他们主要有数组和链表两种实现形式。如下图

 因为在队列里和我们日常的模型很近似,每次如果要出队的话,都是从队头移除。而如果每次要加入新的元素,则要在队尾加。所以我们要在队列里保存队头和队尾

我们可以看到,Deque也是一个接口,它继承了Queue的接口规范。我们要讨论的LinkedList和ArrayDeque都是实现Deque接口,所以,可以说他们俩都是双向队列。具体的实现我们会在后面讨论。Queue作为一个接口,它声明的几个基本操作无非就是入队和出队的操作,具体定义如下:

public interface Queue<E> extends Collection<E> {  
  
    boolean add(E e); // 添加元素到队列中,相当于进入队尾排队。  
  
    boolean offer(E e);  //添加元素到队列中,相当于进入队尾排队.  
  
    E remove(); //移除队头元素  
  
    E poll();  //移除队头元素  
  
    E element(); //获取但不移除队列头的元素  
  
    E peek();  //获取但不移除队列头的元素  
}

 Java中Queue接口方法 
六个: 
a:add(E e):添加一个元素 
b:remove():删除一个元素 
c:offer(E e):添加一个元素 
d:poll(E e):删除一个元素 
f: element() :查看最上一个元素 
h:peek():查看最上一个元素 
上面六个函数总体上分为两类:安全的会进行容量检查的(add,remove,element),如果队列没有值,则取元素会抛出IlleaglStatementException异常。不安全的不进行容量控制的(offer,poll,peek )。

dalao文章 https://www.cnblogs.com/wxd0108/p/5906618.html 

猜你喜欢

转载自blog.csdn.net/weixin_41395565/article/details/81811576