1

コレクションコンストラクターを作成する必要があります。これはコンストラクターで、そのすべての要素を配列から新しい TimeArrayList にコピーします。

私のコンストラクタはこれまでのところこのように見えます

private E[] timeData;
private int capacity = 0;

public TimeArrayList(Collection<? extends E> c) {
    timeData = (E[]) new Object[capacity];
    for (int i = 0; i < timeData.length; i++) {
  //this is where  im having the problem
}
}

配列から値を取得して配列リストを作成する方法がわかりません。イテレータもどこかに入れなければならないと思います。

4

3 に答える 3

2

タイプの配列を取得する最も簡単な方法 まず、データ用のスペースを割り当てる必要があります。

timeData = new (E[]) new Object[c.size()];

その後、次のように の内容を追加できますc

編集:コメントで指摘されているように、 toArray を使用するように変更されました。

c.toArray(timeData);

しかし実際には、最も簡単なのは、標準ライブラリを利用して、配列を手動で使用することを忘れることです。

List<E> timeData;
...
// and in constructor:
timeData = new ArrayList<E>(c);
于 2013-09-30T20:26:53.413 に答える
0

私がすることは、C で要素の数をチェックし、イテレータを使用してそれらの要素を反復処理し、それらを timeData 配列に追加することです。

また、arynaq が言ったように、toArray() メソッドを使用することもできます: https://stackoverflow.com/a/3293970/1688441を参照してください。

public TimeArrayList(Collection<? extends E> c) {

        //Long way
        timeData = (E[]) new Object[c.size()];
        int element = 0;

        Iterator<? extends E> it = c.iterator();
        while(it.hasNext())timeData[element++] = it.next();

        //Short way
        timeData = c.toArray(timeData);     

    }
于 2013-09-30T20:26:01.253 に答える