“队列(queue)”是一个“先进先出”(FIFO)容器。即从容器的一端放入事物,从另
一端取出。因此事物放入容器的顺序与取出的顺序是相同的。LinkedList 提供了方法以支
持“队列”的行为,因此可以用来制作 Queue 类:
//: c11:Queue.java
// Making a queue from a LinkedList.
import com.bruceeckel.simpletest.*;
import java.util.*;
public class Queue {
private static Test monitor = new Test();
private LinkedList list = new LinkedList();
public void put(Object v) { list.addFirst(v); }
public Object get() { return list.removeLast(); }
public boolean isEmpty() { return list.isEmpty(); }
public static void main(String[] args) {
Queue queue = new Queue();
for(int i = 0; i < 10; i++)
queue.put(Integer.toString(i));
while(!queue.isEmpty())
System.out.println(queue.get());
monitor.expect(new String[] {
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
});
}
} ///:~
你也可以很容易地通过 LinkedList 创建一个“双向队列”,它同“队列”一样,不过可以
一端取出。因此事物放入容器的顺序与取出的顺序是相同的。LinkedList 提供了方法以支
持“队列”的行为,因此可以用来制作 Queue 类:
//: c11:Queue.java
// Making a queue from a LinkedList.
import com.bruceeckel.simpletest.*;
import java.util.*;
public class Queue {
private static Test monitor = new Test();
private LinkedList list = new LinkedList();
public void put(Object v) { list.addFirst(v); }
public Object get() { return list.removeLast(); }
public boolean isEmpty() { return list.isEmpty(); }
public static void main(String[] args) {
Queue queue = new Queue();
for(int i = 0; i < 10; i++)
queue.put(Integer.toString(i));
while(!queue.isEmpty())
System.out.println(queue.get());
monitor.expect(new String[] {
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
});
}
} ///:~
你也可以很容易地通过 LinkedList 创建一个“双向队列”,它同“队列”一样,不过可以
从两个方向添加和删除元素。