Java 源码 - java.util.Queue

138 阅读2分钟

1. Queue继承自 Collection,我们先来看看api的解释

Each of these methods exists in two forms: one throwsan exception if the operation fails, the other returns a special value (either {@code null} or {@code false}, depending on the operation). The latter form of the insert operation is designed specifically for use with capacity-restricted {@code Queue} implementations; 

in most implementations, insert operations cannot fail.

2. 接口代码量比较少,我直接贴代码了

public interface Queue<E> extends Collection<E> {
    boolean add(E var1);
    boolean offer(E var1);
    E remove();
    E poll();
    E element();
    E peek();
}

3. 从方法名上不太好猜每个方法的作用,我们直接来看 API 吧

~抛出异常返回特殊值
插入add(e)offer(e)
移除remove()poll()
检查element()peek()

好像就除了对增删查操作增加了一个不抛出异常的方法,没什么特点吧,我们继续看描述~

在处理元素前用于保存元素的 collection。除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不会失败。

就描述了这三组方法的区别,那么以后我操作队列尽量用不抛出异常的方法总行了吧。另外也没看出什么名堂,那么队列这个接口到底是规范了什么行为?关于队列的定义

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

4. Java文档对于不同方法的解释

作者:diamond_lin
链接:juejin.cn/post/684490…
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。