LinkedList可以同时作为堆栈和队列使用
Java里的LinkedList可以同时作为堆栈和队列使用,因此在使用的时候总是会弄混他们的方法,此文就简单总结一下作为不同数据结构使用时的用法。
作为队列
方法
声明
任意两种方法:
- 一是直接声明LinkedList:
LinkedListq = new LinkedList (); - 或者使用java.util.Queue接口,其底层关联到一个LinkedList实例。
Queueq = new LinkedList ();
由于只暴露部分基于队列实现的接口,所以可以提供安全的队列实现。
入队
void offer(T v)
出队
-
T poll(), 如果队列为空,则返回null -
T remove(), 如果队列为空,则抛出异常
偷看
看看队首元素不移除它。
-
T peek(), 如果队列为空,则返回null -
T element(), 如果队列为空,则抛出异常
是否为空
-
boolean isEmpty(), 空返回true,否则返回false
作为堆栈
方法
声明
任意两种方法:
- 一是直接声明LinkedList:
LinkedListstack = new LinkedList (); - 请注意,LinkedList实现的堆栈名称是Deque:
Dequestack = new LinkedList ();
由于只暴露部分基于堆栈实现的接口,所以可以提供安全的队列实现。
入栈
void addFirst(T v)
void push(T v)
出栈
T pop()T poll()
偷看
看看队首元素不移除它。
-
T peek(), 如果队列为空,则返回null -
T element(), 如果队列为空,则抛出异常
是否为空
-
boolean isEmpty(), 空返回true,否则返回false