ArrayDeque双端队列

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值