0

配列に格納された比較対象のコレクションを作成するジェネリック クラスがあります。比較対象とジェネリックがどのように機能するかについては、私は非常に不明確です。

public class OrderedCollection<T extends Comparable<? super T>> 
{
private T collection[]; // the collection
private int size, tempValue; // how many elements currently stored

/**
 * Constructor allocates array and initializes size
 * @param size the number of elements stored
 */
    public OrderedCollection (int capacity) 
    {
    collection = (T[]) new Comparable[capacity];
    size = 0;       
    }
}

まず、コレクションとはどのようなコレクション(配列、リストなど)なのか。new Array[] として明示的にインスタンス化されることはないので、これがどのように配列を作成するのか興味があります。

第 2 に、指定された値 (テスト目的で「5」を使用しています) を挿入し、それをコレクション [0] に割り当てるメソッドが必要です。ただし、コレクション[0]を返すと、nullとして返されます。挿入方法は次のとおりです。

public void insert(T x) 
{
    collection[0] = x;
}

派手なものはありません。コレクションが null を返す理由と、指定されたx値をコレクションに追加する方法を明確にしていただければ幸いです。

4

2 に答える 2

1

通常の規則は次のとおりです。

private T[] collection;

あなたはC互換性の構文でした。

public void add(T x) {
    if (size >= collection.length)
        throw new IllegalStateException();
    collection[size] = x;
    ++size;
}

コレクションは、あらゆる種類のコレクションのインターフェイスです。実装クラスは、HashTree、ArrayListなどです。

これは他のいくつかの言語との違いであり、JavaにはJavaScriptのようないくつかの「コレクション」クラスはありませんが、選択可能な実装を持ついくつかのインターフェースがあります。したがって、マップには、HashMap、TreeMap、LinkedHashMapなどの選択肢があります。したがって、APIにインターフェースを配置しますが、実装はいくつかの実装の技術的な利点を使用します。

たとえば、TreeMapのトラバースは、キーによって順序付けられます。LinkedHashMapのトラバーサルは、挿入順に並べられます。

nullについては、プログラミングエラーである必要があります。

于 2013-01-21T20:51:05.887 に答える
1

Collection とは何かという問題を超えて (API で調べてください)、投稿したコードは問題なく動作します。Comparable (Integer や String など) を実装するいくつかの組み込みクラスでテストしてください... insert() メソッドを呼び出すコードを投稿できますか?

于 2013-01-21T21:03:11.107 に答える