LinkedList可以同时作为堆栈和队列使用
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 
    不积跬步,无以至千里;不积小流,无以成江海。

                
            
        
浙公网安备 33010602011771号