[解決済み】静的なMapを初期化する方法は?
2022-03-23 19:16:51
質問
静的な
Map
をJavaで作成することはできますか?
方法1:静的な初期化子
方法2:インスタンスイニシャライザー(匿名サブクラス)
または
他の方法ですか?
それぞれの長所と短所を教えてください。
2つの方法を説明する例を挙げます。
import java.util.HashMap;
import java.util.Map;
public class Test {
private static final Map<Integer, String> myMap = new HashMap<>();
static {
myMap.put(1, "one");
myMap.put(2, "two");
}
private static final Map<Integer, String> myMap2 = new HashMap<>(){
{
put(1, "one");
put(2, "two");
}
};
}
解決方法は?
インスタンスイニシャライザーは、この場合、単なる構文上の糖分ですよね?初期化するためだけに余計な無名クラスが必要な理由がわからない。しかも、生成されるクラスがfinalだとうまくいかない。
静的な初期化子を使って、イミュータブルなマップを作ることもできます。
public class Test {
private static final Map<Integer, String> myMap;
static {
Map<Integer, String> aMap = ....;
aMap.put(1, "one");
aMap.put(2, "two");
myMap = Collections.unmodifiableMap(aMap);
}
}
関連
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] HashMapを直接(リテラルに)初期化する方法は?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] スリーピング中のスレッドが割り込まれ、データベースへの接続が失われる
-
[解決済み] Javaで地図を作成する
-
[解決済み] HashMapを直接(リテラルに)初期化する方法は?
-
[解決済み] JavaにおけるDouble Braceの初期化とは?
-
[解決済み】Javaの「ダブルブレース初期化」の効率化?