对顺序访问进行了优化,向List中间插入与删除的开销并不大。随机访问则相对较慢(可以使用ArrayList代替)。还具有下列方法:addFirst()、addLast()、getFirst()、getLast()、removeFirst()和removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。 使用LinkedLIst制作一个栈:
import java.util.*; public class Aaa{ private LinkedList list=new LinkedList(); public Object pop() { return list.removeFirst(); } public void push(Object v) { list.addFirst(v); } public Object top() { return list.getFirst(); } public static void main(String[] args) { Aaa stack=new Aaa(); for (int i=0;i<10;i++) { stack.push(i); } System.out.println(stack.top()); System.out.println(stack.pop()); System.out.println(stack.pop()); System.out.println(stack.top()); System.out.println(stack.pop()); } }在上面的程序中,利用LinkedList类的removeFirst方法来实现一个出栈功能,而用addFirst方法实现一个进栈功能。
使用LinkedLIst制作一个队列:
import java.util.LinkedList; public class Aaa{ private LinkedList list=new LinkedList(); public Object get() { return list.removeLast(); } public void put(Object v) { list.addFirst(v); } public boolean isEmpty() { return list.isEmpty(); } public static void main(String[] args) { Aaa queue=new Aaa(); for (int i=0;i<10;i++) { queue.put(Integer.toString(i)); } while(!queue.isEmpty()) { System.out.println(queue.get()); } } }队列利用LinkedList类的removeLast方法来出队,其他操作与栈相同。