[解決済み】Collections.emptyList()とnewインスタンスの比較
2022-04-17 13:05:08
質問
のように空のリストを返した方が良いのでしょうか? これ :
return Collections.emptyList();
または、次のように これ :
return new ArrayList<Foo>();
それとも、返されたリストで何をするかに完全に依存しているのでしょうか?
どのように解決するのですか?
主な違いは
Collections.emptyList()
は
不変
リスト、つまり要素を追加することができないリストです。(同じことが
List.of()
Java 9で導入された)
稀なケースとして
する
は、返されたリストを修正したいと思います。
Collections.emptyList()
と
List.of()
はこのように
ではない
は良い選択だと思います。
契約(ドキュメント)に明示的に異なる記載がない限り、イミュータブルリストを返すことは全く問題ありません(望ましい方法であるとさえ言えます)。
おまけ
emptyList()
は、呼び出しのたびに新しいオブジェクトを作成しないかもしれません。
このメソッドの実装では、呼び出しごとに個別のリストオブジェクトを作成する必要はありません。このメソッドを使用すると、同名のフィールドを使用するのと同等のコストが発生する可能性があります。(このメソッドとは異なり、このフィールドは型安全性を提供しません)。
の実装は
emptyList
は次のようになります。
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
そのため、(空のリストを返す)メソッドが頻繁に呼び出される場合は、この方法の方がCPUとメモリの両方で若干パフォーマンスが良くなる可能性があります。
関連
-
[解決済み] Cloneable throws CloneNotSupportedException
-
[解決済み] Javaでのスキャナが動作しない
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Javaで新しいListを作成する方法
-
[解決済み] Javaでリストを反復処理する方法
-
[解決済み] Java 8 Iterable.forEach() vs foreachループ
-
[解決済み】Javaの「ダブルブレース初期化」の効率化?
-
[解決済み] [Solved] Collections.emptyList() returns a List<Object>?
-
[解決済み】javaでリストを逆順で反復処理する。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] HashMapのtoString関数はなぜ異なる順序で自分自身を印刷するのですか?
-
[解決済み] Java - JTextFieldが空かどうかを確認する
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] android.support.v4.app.FragmentActivity' で 'TAG' がプライベートアクセスされている。
-
[解決済み] Mavenです。JARは空になります - 含有するためにマークされたコンテンツがありません
-
[解決済み] Eclipseでクラスとそれに対応するファイルの名前を変更する方法は?
-
[解決済み] 文字列の長さに応じて文字列をトリミングする
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました