PriorityQueue 源码解析 (一)
🍁 作者:知识浅谈,CSDN 博客专家,阿里云签约博主,InfoQ 签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM 算法
💒 公众号:知识浅谈
PriorityQueue 源码解析(一)总结🤞这次都给他拿下🤞
正菜来了⛳⛳⛳
🎈PriorityQueue 源码函数
🍮PriorityQueue()无参无参构造函数
含义: 这个是创建一个不指定队列大小的优先对列,因为是使用最小堆/最大堆来实现优先队列的,所以底层使用的 Object 数组,所以使用 DEFAULT_INITIAL_CAPACITY 来默认指定数组的大小为 11,第二个参数是传入的比较器,即 comparator,因为未手动指定,所以传入的是一个 null,默认的是最小堆。
🍮PriorityQueue(int initialCapacity)
含义: 这个是创建一个指定队列大小的优先对列,通过 initialCapacity 这个参数接受默认的底层的数组的大小来创建指定大小的数组,同理,因为未指定 comparator 比较器,传入一个 null。
🍮PriorityQueue(Comparator<? super E> comparator)
含义: 这个事是创建一个只是指定比较器的优先队列,我们常常会用到,因为可以通过这个比较器来设置优先队列事小顶堆还是大顶堆,创建一个具有默认初始容量的 PriorityQueue。
🍮PriorityQueue(int initialCapacity,Comparator<? super E> comparator)
含义: 这个构造函数是上边两个默认调用的,如果手动指定了初始容量和比较器,则就直接创建一个具有指定初始容量的 PriorityQueue,它根据指定的比较器对其元素进行排序。
🍮PriorityQueue(Collection<? extends E> c)
含义: 创建一个包含指定集合中元素的 PriorityQueue。如果指定的集合是一个 SortedSet 的实例或者是另一个 PriorityQueue,那么这个优先级队列将按照相同的顺序进行排序。否则,此优先级队列将根据其元素的自然顺序进行排序。
🍮PriorityQueue(PriorityQueue<? extends E> c)
含义: 这个和上边那个比较像,这个参数中已知是优先队列,就会直接调用这个构造函数。
从上边的三个函数可以看出都调用了 initFromPriorityQueue 和 initFromCollection 这两个函数,我们下篇文章中继续探讨这两个函数的作用。
🍚总结
以上是啊关于 PriorityQueue 源码中的不同的构造函数的解析工作,希望有所帮助,Written By 知识浅谈
版权声明: 本文为 InfoQ 作者【知识浅谈】的原创文章。
原文链接:【http://xie.infoq.cn/article/be304ab07727374d9be1fa912】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论