我想知道java标准集合中的哪个类可以成为Min-Heap或Max-Heap的父类?我开发了 Heap 类,它可以根据策略将堆转换为最小值或最大值,并使用 add、toString、toArray 等方法来服务于标准集合方法名称的目的。我需要为 Heap 创建一个父类。我可以扩展哪个类或集合?
我正在使用左右子节点的节点结构。
我想知道java标准集合中的哪个类可以成为Min-Heap或Max-Heap的父类?我开发了 Heap 类,它可以根据策略将堆转换为最小值或最大值,并使用 add、toString、toArray 等方法来服务于标准集合方法名称的目的。我需要为 Heap 创建一个父类。我可以扩展哪个类或集合?
我正在使用左右子节点的节点结构。
Javas PriorityQueue
(通常;允许 JRE 做不同的事情)作为堆实现。
如果您想要其他排序顺序,请使用反向比较器,例如Collections.reverseOrder()
.
最小或最大堆不需要父类;因为它们是相同的东西,只是排序顺序不同。
因此,您无需执行任何操作,请使用PriorityQueue
.
没有标准,我不建议自己实现数据结构。幸运的是,Guava 有一个基于 Atkinson 等人的最小-最大堆的实现,它只使用一个数组来存储数据。