私はデータ構造コースを取っています。私たちはMark WeissのJava 2nd Editionのデータ構造とアルゴリズム解析を使用しています。彼のBinaryHeapの実装では、コンストラクタはAnyType []にキャストされるComparable []配列を作成します。新しいAnyType []を作成するのではなく、なぜ彼がこれを行うのか、あなたは何か考えていますか?データ構造(Weiss Java book):T []の代わりにBinaryHeap <T>配列にComparable []を割り当てる理由
私はBinaryHeapの構造を理解していますが、私はジェネリックスを高速化したいと考えています。クラス宣言は、AnyTypeがAnyTypeまたはAnyTypeの継承階層を上回る任意のスーパークラス(AnyTypeが型のサブクラスであり、機能するためにそのcompareToメソッドを変更する必要がない場合)。
ただし、行番号array = (AnyType[]) new Comparable[ capacity + 1 ];
はわかりません。 AnyTypeはすでにComparableではありませんか? array = new AnyType[ capacity + 1 ];
を書くだけではどんな影響がありますか?
完全なクラスソース
は on his siteを見つけることができますが、ここで私はと心配部品です:public class BinaryHeap<AnyType extends Comparable<? super AnyType>>
{
private int currentSize; // Number of elements in heap
private AnyType [ ] array; // The heap array
/**
* Construct the binary heap.
* @param capacity the capacity of the binary heap.
*/
public BinaryHeap(int capacity)
{
currentSize = 0;
array = (AnyType[]) new Comparable[ capacity + 1 ];
}