0
点赞
收藏
分享

微信扫一扫

ArrayDeque双端队列

whiteMu 2022-01-17 阅读 66

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);
    }
}
  1. addFirst():元素从队首进入
  2. addLast():元素从队尾进入

结果:
[8, 6, 4, 2, 1, 3, 5, 7]
可以看出,左边是队首,右边是队尾。

  1. pollFirst():元素从队首移除
  2. 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的功能(和①的方向相反)

举报

相关推荐

0 条评论