1.基础用法
public class DequeDemo {
public static void main(String[] args) {
int []arr={1,2,3,4,5,6,7,8};
ArrayDeque<Integer> aDeque=new ArrayDeque<Integer>();
for(int i=0;i<arr.length;i++) {
if((arr[i]%2)==0) {
//如果元素是偶数从队首加入,否则从队尾加入
aDeque.addFirst(arr[i]);
}else {
aDeque.addLast(arr[i]);
}
}
System.out.println(aDeque);
}
}
- addFirst():元素从队首进入
- addLast():元素从队尾进入
结果:
[8, 6, 4, 2, 1, 3, 5, 7]
可以看出,左边是队首,右边是队尾。
- pollFirst():元素从队首移除
- pollLast():元素从队尾移除
aDeque.pollFirst();
结果:
[6, 4, 2, 1, 3, 5, 7]
aDeque.pollLast();
结果:
[6, 4, 2, 1, 3, 5]
2.搭配用法
队列
public static void main(String[] args) {
int []arr={1,2,3,4,5,6,7,8};
ArrayDeque<Integer> aDeque=new ArrayDeque<Integer>();
//从双端队列的头部加元素
for(int i=0;i<arr.length;i++)
aDeque.addFirst(arr[i]);
//从双端队列的尾部删元素
// while(!aDeque.isEmpty())
// aDeque.pollLast();
for(int i=0;i<4;i++) {
aDeque.pollLast();
}
System.out.println(aDeque);
}
结果:
[8, 7, 6, 5]
可以看出:
①将addFirst() 和 pollLast() 组合使用,就实现了队列FIFO的功能
②将addLast() 和 pollFirst() 组合使用,就实现了队列FIFO的功能(和①的方向相反)
栈
public static void main(String[] args) {
int []arr={1,2,3,4,5,6,7,8};
ArrayDeque<Integer> aDeque=new ArrayDeque<Integer>();
//从双端队列的头部加元素
for(int i=0;i<arr.length;i++)
aDeque.addFirst(arr[i]);
//从双端队列的尾部删元素
// while(!aDeque.isEmpty())
// aDeque.pollFirst();
for(int i=0;i<4;i++) {
aDeque.pollFirst();
}
System.out.println(aDeque);
}
结果:
[4, 3, 2, 1]
可以看出:
①将addFirst() 和 pollFirst() 组合使用,就实现了栈FILO的功能
②将addLast() 和 pollLast() 组合使用,就实现了栈FILO的功能(和①的方向相反)