这是在刷剑指offer--“数据流中的中位数”一题中所遇到的问题,该题需要实现一个最大堆,一个最小堆。
实现方法如下:
PriorityQueue minHeap = new PriorityQueue();
//小顶堆,默认容量为11
PriorityQueue maxHeap = new PriorityQueue(11,new Comparator(){ //大顶堆,容量11
@Override
public int compare(Integer i1,Integer i2){
return i2.compareTo(i1);
}
});
其中 PriorityQueue 类是在JDK1.5后提供的新的数据结构的接口,其默认实现的的是最小堆,但是可以通过重写其排序器实现最大堆。利用的构造方法如下,其中initialCapacity指的是初始容量,由于默认值为11,所以重写时设为11.
PriorityQueue(int initialCapacity, Comparator super E> comparator)
【java|利用PriorityQueue实现最大最小堆】
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)