Queue类和Deque类的区别

首先,这两个类都是继承自collection接口。

Deque是Queue的子接口。

一般来说,Deque用于双端队列,在头尾都可插入和删除。

Queue就是普通的队列,满足FIFO。

Queue常用的一个子类是PriorityQueue。我反正是没怎么见过。这东西的特性是自带扩容机制,底层实现用的是数组。

Deque常用的子类有两个:ArrayDeque和LinkedList。
这两玩意都是既可以当作栈用,也可以当作队列用。但是效率有区别。
ArrayDeque用作队列时效率高。
LinkedLIst用作栈时效率高。
为什么呢?
ArrayDeque是无初始容量的双端队列(没闹明白)
LinkedList有尾节点,不需要判空。(也没闹明白)

private static void usingAsQueue() {
        Deque<Integer> queue=new ArrayDeque<>();
 
        System.out.println("队列为空:"+queue.isEmpty());   //判断队列是否为空
 
        queue.addLast(12);   //添加元素
        System.out.println(queue.peekFirst());   //获取队列首部元素
        System.out.println(queue.pollFirst());   //获取并移除栈顶元素
 
 }
 
private static void usingAsStack() {
        //作为栈使用
        Deque<Integer> stack=new LinkedList<>();
 
        System.out.println("栈为空:"+stack.isEmpty());   //判断栈是否为空
 
        stack.addFirst(12);//添加元素
        System.out.println(stack.peekFirst());   //获取栈顶元素
        System.out.println(stack.pollFirst());   //获取并移除栈顶元素
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值