MINIMUM或MAXIMUM HEAP的标准集合

时间:2014-03-05 21:53:08

标签: java collections min-heap max-heap

我想知道java的标准集合中的哪个类可以成为Min-Heap或Max-Heap的父类? 我开发了类Heap,它可以根据策略和使用的方法(如add,toString,toArray)将堆转换为min或max,以用于标准集合方法名称。我需要为Heap创建一个父类。我可以扩展哪个类或集合?

我正在使用左右孩子的Node结构。

2 个答案:

答案 0 :(得分:3)

Javas PriorityQueue(通常; JRE可以做出不同的做法)实现为堆。

如果您想要其他排序顺序,请使用反向比较器,例如Collections.reverseOrder()

最小或最大堆不需要父类;因为它们是相同的,只是采用不同的排序顺序。

因此,您无需使用PriorityQueue

答案 1 :(得分:1)

没有标准,我不建议您自己实施数据结构。幸运的是,Guava有一个基于Atkinson等人的implementation of min-max heap,它只使用一个数组来存储数据。