LinkedList提供了addFirst(),addLast(),removeFirst()方法操作集合中的元素
基于这些功能,就可以实现队列与栈的数据结构。
队列---先进先出FIFO
import java.util.Collection;
import java.util.LinkedList;
public class Queue<E> {
private LinkedList<E> link;
Queue() {
link = new LinkedList<E>();
}
public void add(E e) {
link.addLast(e);
}
public void addAll(Collection<? extends E> coll) {
link.addAll(coll);
}
public E getNext() {
return link.removeFirst();
}
public boolean isEmpty() {
return link.isEmpty();
}
}
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("123");
list.add("abc");
list.add("000");
printQueue(list);
}
private static void printQueue(List<String> list) {
Queue<String> queue = new Queue<String>();
queue.add("------------");
queue.addAll(list);
queue.add("$$$$$$$$$$$$");
while(!queue.isEmpty()) {
System.out.println(queue.getNext());
}
}
结果
------------
123
abc
000
$$$$$$$$$$$$
栈---后进先出FILO
import java.util.Collection;
import java.util.LinkedList;
public class Stack<E> {
private LinkedList<E> link;
public Stack() {
link = new LinkedList<E>();
}
public void add(E e) {
link.addFirst(e);
}
public void addAll(Collection<? extends E> coll) {
Object[] elements = coll.toArray();
int size = elements.length;
for(int index=size-1;index>=0;index--)
add((E)elements[index]);
}
public E getNext() {
return link.removeFirst();
}
public boolean isEmpty() {
return link.isEmpty();
}
}
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("123");
list.add("abc");
list.add("000");
printStack(list);
}
public static void printStack(List<String> list) {
Stack<String> stack = new Stack<String>();
stack.add("------------");
stack.addAll(list);
stack.add("$$$$$$$$$$$$");
while(!stack.isEmpty()) {
System.out.println(stack.getNext());
}
}
结果
$$$$$$$$$$$$
123
abc
000
------------