[解決済み] JavaでIterable<T>とCollection<T>を比較した場合、どのような場合にパラメータを受け取るべきでしょうか?
質問
を使用する際の注意点は何ですか?
Iterable<T>
vs.
Collection<T>
をJavaで使うか?
例えば、主に
Foo
のコレクションと、関連するいくつかのメタデータを含むことに主眼を置いた型を実装することを考えてみましょう。この型のコンストラクタは、オブジェクトリストを一度だけ初期化することができます。(メタデータは後で設定できます。) このコンストラクタはどのような型を受け入れるべきでしょうか。
Iterable<Foo>
または
Collection<Foo>
?
この決定にはどのような考慮が必要ですか?
などのライブラリ型が示すパターンに従って
ArrayList
(などのライブラリ型(これは任意の
Collection
が、しかし
ではなく
an
Iterable
) を使用するように導かれるでしょう。
Collection<Foo>
.
しかし、なぜ
Iterable<Foo>
で十分だと思うのですが。なぜより高度な機能を要求するのでしょうか (
Collection
)を消費者に要求するのでしょうか?
Iterable
)?
どのように解決するのですか?
多くのコレクションタイプは、以前から存在する
Iterable<T>
(これは 1.5 で導入されました) よりも前に存在していました。
Iterable<T>
と同様に
Collection<T>
を追加しましたが、既存のコンストラクタを変更することは、破壊的な変更になります。
個人的には
Iterable<T>
を使います。呼び出し側にとってより柔軟であり、特に、これによって
比較的
Google Java Collections (そして間違いなく同様のライブラリ) を使用して、フィルタリングや投影などを簡単に行うことができます。
関連
-
[解決済み] Javaでパラメータの型の横にある3つの点は何を意味するのですか?
-
SocketException java.netの4つの例外解決策。
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] コレクションを反復処理し、ループ内でオブジェクトを削除する際に ConcurrentModificationException を回避する。
-
[解決済み] ThreadLocal変数はいつ、どのように使用すればよいですか?
-
[解決済み] Javaコレクションをフィルタリングする方法(述語に基づく)?
-
[解決済み] Java の assert キーワードは何をするのか、そしていつ使うべきなのか?
-
[解決済み] JavaでequalsとhashCodeをオーバーライドする際に考慮すべき事項は?
-
[解決済み] IterableをCollectionに変換する簡単な方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
Jsoup-Crawlingの動作
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
SocketException java.netの4つの例外解決策。
-
java.sql.SQLException: 結果セットの開始前
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
Java Runtime Environmentを継続するためのメモリが不足しています。
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
[解決済み] Java: List<String> を join()d String に変換する。