作为程序员,只知道简单的如何实现是不够的,最好能够深入源码,下面我们就来聊一聊PriorityQueue
PriorityQueue是优先队列,作用是保证每次取出的元素都是队列中权值最小的,这里涉及到了大小关系,元素大小的评判可以通过元素自身的自然顺序(使用默认的比较器),也可以通过构造时传入的比较器。
Java中PriorityQueue实现了Queue接口,不允许放入null元素;其通过堆实现,具体说是通过完全二叉树(complete binary tree)实现的小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权值),也就意味着可以通过数组来作为PriorityQueue的底层实现。(下图是网上截的,只是这个讲的不是很详细,图还是可以的,所有自己再总结一下,原链接:https://www.cnblogs.com/Elliott-Su-Faith-change-our-life/p/7472265.html)
一维数组
一维数组在数组中最常用,即将一组值存放到一个数组中,并为其定义一个名称,通过数组中元素的位置来存取值。