配列でジェネリック型を使用するようにプログラムを変換するように求められました。
どこから始めればよいかわかりません。配列をジェネリックに変換しようとしましたが、問題が発生し続けます。
を使用して配列をジェネリックに変換しようとしましたqueArray = (T[]) (new Comparable[maxSize]);
が、すべての変数を変更してジェネリック型を使用すると仮定した後、エラーが発生し続けます。
ここで何を変更する必要がありますか?
配列でジェネリック型を使用するようにプログラムを変換するように求められました。
どこから始めればよいかわかりません。配列をジェネリックに変換しようとしましたが、問題が発生し続けます。
を使用して配列をジェネリックに変換しようとしましたqueArray = (T[]) (new Comparable[maxSize]);
が、すべての変数を変更してジェネリック型を使用すると仮定した後、エラーが発生し続けます。
ここで何を変更する必要がありますか?
T
を実装する必要があることを宣言しますComparable
。PriorityQ
これにより、が順序付けのために比較できるクラスのみをサポートできることを明示的に述べることができます。これは次のように行われます。
class PriorityQ<T extends Comparable<T>>
は type のインスタンスを順序付けているため、の配列として編集するqueArray
必要があります。new
T
PriorityQ
T
queArray = new T[maxSize];
最後に、Comparable.compareTo
比較に次のメソッドを使用します。
if( item .compareTo(queArray[j]) > 0 ) // if new item larger,
あなたが何を望んでいるのかは不明ですが、私は推測します...
タイプに境界を設定します(編集済み - was でしたが<T extends Number>
、Number
実装していませんComparable
):
class PriorityQ<T extends Number & Comparable<T>>
メソッドを returnT
に変更します。例:
public T peekMin()
次に、Long
実装のために、次のようにします。
PriorityQ<Long> pqLong = new PriorityQ<Long>(9);
以下を更新して、
thePQ.insert(30L);
thePQ.insert(50L);
thePQ.insert(10L);
thePQ.insert(40L);
thePQ.insert(20L);