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