学习Queue看这篇就够了(源码分析)

Queue

Queue是Java集合框架中的一员,继承于Collection接口。
与List、Set相同的是,Queue也实现了一种数据结构,这就是队列。

队列是计算机中的一种数据结构,保存在其中的数据具有“先进先出(FIFO,First In First Out)”的特性。
在数据结构中,队列不支持从队伍的中间插入和离开,只能从头尾进行。

队列的两种形式

在Java中,队列分为2种形式,一种是单队列,一种是循环队列;
通常,都是使用数组来实现队列。假定数组的长度为6,也就是队列的长度为6;

  • 单队列:
    第一步,创建一个空数组,有两个变量,分别为front、rear,代表着头指针、尾指针;
    在这里插入图片描述
    第二步,向队列中插入数据;
    在这里插入图片描述
    第三步,移除队头中的数据;
    在这里插入图片描述
    第四步,再次向队列中插数据(此时rear指针指向了一个不存在的角标);
    在这里插入图片描述
    此时,单队列发生了“假溢出”情况,尾指针指向了一个不存在的数组角标。
    如果,要解决该情况的发生,有两种方式-----一,无限扩充数组大小;二,引入循环队列;

  • 循环队列:
    当尾指针超过了数组角标大小,此时我们会判断队列的头部是否有剩余的空间,如果有就把尾指针指向队列的头部;
    在这里插入图片描述
    此时,循环队列就产生了。
    其实,循环队列就是将单队列的首位进行相连,形成了一个圆圈,这样就不会发生角标越界的情况了。
    在Java中,ArrayDeque、LinkedList、PriorityQueue等类实现了Queue接口,模拟了队列的数据结构。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值