私の質問は、タイトルを構成するほとんどのワンライナーです。List interface
の代わりにを使用するのが適切なのはCollection interface
いつですか?
明快さと読みやすさに関する単なる質問ですか。つまり、コードに応じてどちらかを使用すると、コードの意図がより明確になりますかList
、Collection
それとも私が気付いていない他の利点がありますか?
私の質問は、タイトルを構成するほとんどのワンライナーです。List interface
の代わりにを使用するのが適切なのはCollection interface
いつですか?
明快さと読みやすさに関する単なる質問ですか。つまり、コードに応じてどちらかを使用すると、コードの意図がより明確になりますかList
、Collection
それとも私が気付いていない他の利点がありますか?
以下の特典が必要な場合:
Collection から継承された操作に加えて、List インターフェイスには次の操作が含まれます。
としてリストされています
位置アクセス — リスト内の数値位置に基づいて要素を操作します
検索 — リスト内の指定されたオブジェクトを検索し、その数値位置を返します
Iteration — Iterator セマンティクスを拡張して、リストのシーケンシャルな性質を利用する
Range-view — リストに対して任意の範囲操作を実行します。
この質問は、長所と短所を比較検討するのに適しています。本質的に、は実際には であるためList
、 にいくつかの追加機能を適用します。Collection
List
Collection
私があなただったら、あなたのコードの要件について考えます。コレクション オブジェクトに項目を追加および削除するだけでよい場合は、 を使用する必要がありますCollection
。
順序を保持したい場合、特定のインデックスでリスト内のアイテムを取得したい場合、または特定の位置にある要素を削除したい場合は、 を使用する必要があります。 ではこの機能が提供されていないためですList
。Collection
ユーザーがデータにインデックス付けできるようにしたいですか? はいの場合は、List を使用します。どちらもインターフェイスであるため、実装の詳細を漏らすことはありません。実際には、必要な最小限の機能を決定する必要があります。
参照するオブジェクトが List インターフェイス (例: ArrayList、LinkedList) を実装している場合 - もちろん、List 参照を使用することをお勧めします。私の貧弱な経験から、本番コードでコレクション参照を最後に見たのはいつだったか覚えていません。そのような抽象化は必要ありませんでした。適切であれば、List を使用する方がはるかに明確です。
場合によります。
使用されているコレクションのタイプを気にしない場合は、Collection<E>
適切です。List<E>
、などのタイプをSet<E>
使用する必要がある場合は、それを指定します。
Iterable<E>
質問に追加することもできます。それはすべて、どのレベルの特異性が必要かによって異なります。