0

我想知道java标准集合中的哪个类可以成为Min-Heap或Max-Heap的父类?我开发了 Heap 类,它可以根据策略将堆转换为最小值或最大值,并使用 add、toString、toArray 等方法来服务于标准集合方法名称的目的。我需要为 Heap 创建一个父类。我可以扩展哪个类或集合?

我正在使用左右子节点的节点结构。

4

2 回答 2

4

Javas PriorityQueue(通常;允许 JRE 做不同的事情)作为堆实现。

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

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

因此,您无需执行任何操作,请使用PriorityQueue.

于 2014-03-05T22:07:15.627 回答
1

没有标准,我不建议自己实现数据结构。幸运的是,Guava 有一个基于 Atkinson 等人的最小-最大堆的实现,它只使用一个数组来存储数据。

于 2014-03-05T22:02:05.357 回答