LinkedList本身添加了可以使其用于栈、队列和双端队列的方法,数据以链接方式存储,Deque为队列接口,Entry是链接数据结构
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
private transient Entry<E> header = new Entry<E>(null, null, null);
private transient int size = 0;
因为LinkedList也实现了List接口的其它方法,下面根据栈实现的方法重新自己写一遍只实现栈的操作,如下:
/*** 使用linkedList实现栈操作
* @author sunny
* LinkedList实现了和ArrayList一样的List接口,它在执行一些插入和移除操作时比ArrayList效率高,
* 因为它底层是链表的实现方式,但是它在随机访问时没有ArrayList效率高,数组可以直接访问下标
* 栈的特点是先进后出
* @param <T>
*/
public class Stack<T> {
private LinkedList<T> storage = new LinkedList<T>();
public void push(T v){
storage.addFirst(v);
}
public T peek(){
return storage.getFirst();
}
public T pop(){
return storage.removeFirst();
}
public boolean empty(){
return storage.isEmpty();
}
public static void main(String[] args){
Stack<String> stack = new Stack<String>();
for(String s : "This is a dog!".split(" ")){
stack.push(s);
}
while (!stack.empty()) {
System.out.println(stack.pop());
}
}
}
输出结果:
dog!
a
is
This