我正在实现一组数据结构,并决定尝试通过数组来实现 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,是不安全的。我遇到了这个问题,不确定如何实现构造函数。任何帮助,将不胜感激。