[解決済み] Collections.emptyMap() vs new HashMap()
質問
を使用する場面にはどのようなものがありますか?
Collections.emptyMap()
? ドキュメントには、コレクションをイミュータブルにしたい場合にこのメソッドを使用することができると書かれています。
なぜ、不変の空のコレクションが必要なのでしょうか?何が言いたいの?
どのように解決するのですか?
から
効果的なJava
,
項目番号43
-
"Return empty arrays or collections, not null"
は空のコレクションを返すことを示し、さらにこれらの
emptyList()
,
emptySet()
および
emptyMap()
メソッドを使って、空のコレクションを取得します。このコレクションは、イミュータブルであるという利点もあります。より
項目番号 15
"Minimize Mutability"
.
から コレクション-emptySet-Collections-emptyList-Collections
プログラミングのイディオムの一種です。これは、NULL変数を必要としない人たちのためのものです。つまり、集合が初期化される前に、空の集合を使うことができるのです。
注意してください。 以下のコードは単なる例です(あなたの使用状況に応じて変更してください)。
private Set myset = Collections.emptySet();
void initSet() {
myset = new HashSet();
}
void deleteSet() {
myset = Collections.emptySet();
}
これらの方法には、いくつかの利点があります。
-
コレクションの総型を明示的にタイプアウトする必要がないため、より簡潔です。一般的には、メソッド呼び出しのコンテキストから推測されます。
-
新しいオブジェクトをわざわざ作成する必要がなく、既存の空で不変のオブジェクトを再利用するだけなので、より効率的です。この効果は一般的には非常に小さいものですが、たまに(いや、めったに)重要なことがあります。
関連
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] HashMapを直接(リテラルに)初期化する方法は?
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] コレクションを反復処理し、ループ内でオブジェクトを削除する際に ConcurrentModificationException を回避する。
-
[解決済み】静的なMapを初期化する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
final, finally, finalizeの違いについて話してください。
-
SpringBootApplication を型解決できない。
-
javaで非静的な解を静的な参照にすることができない
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
[解決済み】nullと空のコレクションのどちらを返すのが良いですか?
-
[解決済み] ミュータブルとイミュータブルのオブジェクト