私は一連のデータ構造を実装しており、配列を介して maxheap の実装を試みることにしました。これは、maxheap の一般的な実装の 1 つであるためです。そのために、型と次のクラス シグネチャ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
をスローしています。これは、 ではないClassCastException
からのダウンキャストが安全でないためです。私はこれで壁にぶつかり、コンストラクターの実装方法がわかりません。どんな助けでも大歓迎です。Object
Comparable