








LinkedList底层是由双向链表实现的,因此可以支持Queue和Stack。
本文讨论的实现基于JDK8源码。
LinkedList本身实现了Queue接口。
| 方法签名 | 接口说明(JDK手册) | 代码实现概括(JDK8) |
|---|---|---|
| boolean add(E e) | 将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。 | last处插入新节点 |
| boolean offer(E e) | 将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。 | 直接调用add() |
| 方法签名 | 接口说明(JDK手册) | 代码实现概括(JDK8) |
|---|---|---|
| E element() | 获取,但是不移除此队列的头。 | 取首元素,首元素为空则抛NoSuchElementException异常 |
| E peek() | 获取但不移除此队列的头;如果此队列为空,则返回 null。 | 取首元素,首元素为空则返回null |
| E poll() | 获取并移除此队列的头,如果此队列为空,则返回 null。 | 调用unlinkFirst()移除首元素 |
| E remove() | 获取并移除此队列的头。 | 调用removeFirst(), 比unlinkFirst()多了一个校验,如果首元素为空则抛NoSuchElementException异常 |
Stack类已经比较老,官方已不推荐使用,推荐使用LinkedList替代。
| 方法签名 | 接口说明(JDK手册) | 代码实现概括(JDK8) |
|---|---|---|
| push(E e) | 将元素推入此列表所表示的堆栈。 | 调用addFirst() (即linkFirst()) |
| E peek() | 获取但不移除此列表的头(第一个元素)。 | 取首元素,首元素为空则返回null |
| E poll() | 获取并移除此列表的头(第一个元素) | 调用unlinkFirst()移除首元素 |
| E pop() | 从此列表所表示的堆栈处弹出一个元素。 | 调用removeFirst(), 比unlinkFirst()多了一个校验,如果首元素为空则抛NoSuchElementException异常 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。