[解決済み] Javaで空のマップを作成する最良の方法
質問
空の地図を作りたいのですが、どうすればいいですか?
if (fileParameters == null)
fileParameters = (HashMap<String, String>) Collections.EMPTY_MAP;
問題は、上記のコードでこのような警告が出ることです。 型の安全性。MapからHashMapへのキャストのチェックが外れています。
この空のマップを作成する最も良い方法は何でしょうか?
どのように解決するのですか?
1) Mapがimmutableになりうる場合。
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
コンパイラがどのような種類のMapが必要かを自動的に判断できない場合、後者を使わなければならないことがあります(これを 型推論 ). 例えば、このように宣言されたメソッドを考えてみましょう。
public void foobar(Map<String, String> map){ ... }
空のMapを直接渡す場合は、型を明示的に指定する必要があります。
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2) Mapを修正できるようにする必要がある場合は、例えば。
new HashMap<String, String>()
(として tehblanxが指摘した )
追記 : もしあなたのプロジェクトが グアバ であれば、次のような選択肢があります。
1) イミュータブルマップです。
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
と比較して、大きな利点はありません。
Collections.emptyMap()
.
Javadoc から
:
このマップの動作やパフォーマンスは
Collections.emptyMap()
, と同等の動作と性能を持ち,主にコードの一貫性と保守性のために好まれます。 が望ましいです。
2) 修正可能な地図。
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps
には、他のタイプのマップをインスタンス化するための同様のファクトリーメソッドが含まれています。
TreeMap
あるいは
LinkedHashMap
.
アップデート(2018年) : オン Java 9 またはそれ以降では、不変の空マップを作成するための最短コードは
Map.of()
...新しい コンビニエンス・ファクトリ・メソッド から JEP 269 . ????
関連
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
IDEA パッケージステートメントの欠落
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] HashMapを直接(リテラルに)初期化する方法は?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
Methodのinvokeメソッド実装のJavaリフレクション
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
自動配線された依存性のインジェクションに失敗しました。
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
javaでクラスを作成すると、enclosing classでないように見える
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
IDEA パッケージステートメントの欠落
-
ローカルリソースのロードが許可されていない場合の解決策