前言
刷 LeetCode 的时候,发现 LinkedList 可以同时作为 栈 和 队列 使用。记录一下它们作为不同数据结构使用时的用法。
LinkedList 是双向链表,现在的 java 的队列和栈都是把它们封装在了LinkedList 里面。
队列
即 FIFO 模型,先进先出
1 | import java.util.LinkedList; |
接口方法
入
offer()
会在长度不够时返回false
add()
会在长度不够时抛出异常:IllegalStateException;
出
poll()
会在没元素时返回null
remove()
会在没元素时抛出异常:NoSuchElementException;
查看队首元素
peek()
会在没元素时返回null
element()
会在没元素时抛出异常:NoSuchElementException;
是否为空
isEmpty()
空返回true
,否则返回false
栈
即 FILO 模型,先进后出
这里不是 Stack 借口了,Java 把栈封装在 Deque 接口里面
1 | import java.util.Deque; |
接口方法
扩展:Deque 接口
Deque 是双向队列,此接口定义在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法。每种方法都存在两种形式:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null
或false
,具体取决于操作)。
里面的方法可以看这篇文章:Java 数据结构之Deque(双向队列)