0

List を実装する SortedList クラスを作成しています。

私の理解が正しければ、メソッド toArray(T[] a) はオブジェクトの配列をパラメーターとして取り、これらのオブジェクトの並べ替えられた配列を返します。

Java ドキュメントでは、コレクションの長さが sortedList よりも大きい場合、適切なサイズの新しい配列が作成され、コレクションの長さが sortedList よりも小さい場合、コレクションの最後のオブジェクトに続くオブジェクトが設定されることがわかります。ヌルに。

私が取り組んでいるプロジェクトでは、並べ替えられたリストで null 値を使用できないため、新しい sortedList と toArray() メソッドを使用して、メソッドを別の方法で実装しています。

public <T> T[] toArray(T[] a)
{
    SortedList sort = new SortedList();

    for(Object o : a)
    {
        sort.add(o);
    }

    return (T[])sort.toArray();
}

これはこのメソッドを実装する良い方法ですか、それともそのように使用するとエラーが発生することを期待する必要がありますか?

お時間をいただきありがとうございます。

4

3 に答える 3

1

最初の推奨事項:

SortedListインターフェイスを実装する場合は、直接実装するのではなく、List拡張することをお勧めします。あなたが問題を抱えているものを含め、必要なメソッドの多くはすでに定義されています。Java プラットフォーム ライブラリのほとんどの実装も拡張されます。AbstractListListAbstractListListAbstractList

それでも直接実装したい場合Listは、メソッドが行うべきことは次のとおりです。

指定aされた配列とします。

  • aが十分に大きい場合はSortedList、以前に にあったものを気にせずに、(正しい順序で)の要素を入力しますa
  • a埋めて余裕があればをセットa[size()] = null。リストに要素が含まれていない限り、ユーザーはリストがどこで終了するかを知ることができますnull
  • リストが に収まらない場合は、リストと同じサイズaの型の新しい配列を作成し、代わりに新しい配列を埋めます。T
  • 入力した配列を返します。を満たした場合はa、 を返しaます。新しい配列を作成した場合は、新しい配列を返します。

この方法が役立つ理由は 2 つあります。

  • 配列は必ずしも typeObjectではなくT、ユーザーによって決定された型になります (型が有効である限り)。
  • ユーザーは、メモリを節約して、新しいメモリを作成するためにメモリをさらに割り当てる代わりに、配列を再利用したい場合があります。

Java Docs でのメソッドの説明は次のとおりです

于 2013-05-01T16:39:18.143 に答える