LinkedList是双向列表,就相当于是一个队列,列表中的每个节点都包含了对前一个和后一个元素的引用,可以在任意一端添加或移除元素。
它包含支持双向队列的方法,但是在java标准类库中没有任何显示的用于双向队列的接口。但是可以使用一个组合来创建一个Deque类,并直接从LinkedList中暴露相关的方法。
import java.util.LinkedList;
public class Deque<T> {
private LinkedList<T> deque = new LinkedList<T>();
public void addFirst(T e) {
deque.addFirst(e);
}
public void addLast(T e) {
deque.addLast(e);
}
public T getFirst() {
return deque.getFirst();
}
public T getLast() {
return deque.getLast();
}
public T removeFirst() {
return deque.removeFirst();
}
public T removeLast() {
return deque.removeLast();
}
public int size() {
return deque.size();
}
// add other methods
}
public class Test1 {
public static void fillTest(Deque<Integer> deque) {
for (int i =20; i < 27; i++) {
deque.addFirst(i);
}
for (int i = 40; i<50; i++) {
deque.addLast(i);
}
}
public static void main(String[] args) {
Deque<Integer> d1 = new Deque<Integer>();
fillTest(d1);
while(d1.size() != 0) {
System.out.print(d1.removeFirst() + " ");
}
while(d1.size() != 0) {
System.out.print(d1.removeFirst() + " ");
}
}
}
运行结果:26 25 24 23 22 21 20 40 41 42 43 44 45 46 47 48 49