我正在实现一组数据结构,并决定尝试通过数组来实现 maxheap,因为它是 maxheaps 的常见实现之一。为此,我有一个名为的接口MaxHeap<T>
,它接受Comparable
类型T
和以下类签名:
public class ArrayMaxHeap<T extends Comparable<T>> implements MaxHeap<T> {
T
必须是Comparable
,否则在从堆中进行添加和删除时,我将无法相互比较元素。问题在于类的构造函数:
public class ArrayMaxHeap<T extends Comparable<T>> implements MaxHeap<T> {
private T[] data;
private int last;
private static final int INIT_CAPACITY = 10;
/**
* Creates an empty ArrayMaxHeap with the default capacity.
*/
public ArrayMaxHeap(){
data = (T[])(new Object[INIT_CAPACITY]);
last = 0;
}
的类型转换data
是抛出 a ClassCastException
,因为从 向下转换Object
,不是Comparable
,是不安全的。我遇到了这个问题,不确定如何实现构造函数。任何帮助,将不胜感激。