我想知道java的标准集合中的哪个类可以成为Min-Heap或Max-Heap的父类? 我开发了类Heap,它可以根据策略和使用的方法(如add,toString,toArray)将堆转换为min或max,以用于标准集合方法名称。我需要为Heap创建一个父类。我可以扩展哪个类或集合?
我正在使用左右孩子的Node结构。
答案 0 :(得分:3)
Javas PriorityQueue
(通常; JRE可以做出不同的做法)实现为堆。
如果您想要其他排序顺序,请使用反向比较器,例如Collections.reverseOrder()
。
最小或最大堆不需要父类;因为它们是相同的,只是采用不同的排序顺序。
因此,您无需使用PriorityQueue
。
答案 1 :(得分:1)
没有标准,我不建议您自己实施数据结构。幸运的是,Guava有一个基于Atkinson等人的implementation of min-max heap,它只使用一个数组来存储数据。