ホームページ >Java >&#&チュートリアル >Java で HashMap を効率的に初期化するにはどうすればよいですか?

Java で HashMap を効率的に初期化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-25 13:52:13753ブラウズ

How Can I Initialize a HashMap in Java Efficiently?

リテラルの HashMap の初期化

簡潔かつリテラルな方法で特定のキーと値のペアを使用して Java HashMap を初期化することは、開発者にとってわかりにくい機能でした。ただし、Java の進歩により、マップ作成が簡略化される道が開かれました。

Java 9 以降: ファクトリ メソッド

Java バージョン 9 以降、Map クラスにはマップ作成を効率化するファクトリ メソッドが導入されています。

  • Map.of: でマップを作成できます簡潔な構文を使用して最大 10 個の要素:

    Map<String, String> test1 = Map.of("a", "b", "c", "d");
  • Map.ofEntries: 任意の数の要素を含むマップを作成します:

    import static java.util.Map.entry;
    
    Map<String, String> test2 = Map.ofEntries(
      entry("a", "b"),
      entry("c", "d")
    );

ただし、これらの方法では次のような結果が生じることに注意することが重要です。不変マップ。変更可能なマップの場合、次を使用してコピーを作成できます。

mutableMap = new HashMap<>(Map.of("a", "b"));

Java 8 以前: 匿名クラスまたは関数

Java 9 より前では、直接リテラル初期化はサポートされていませんでした。同様の効果を実現するには、次の手法を使用できます。

  • Initializer を備えた匿名クラス: コンストラクターでマップを初期化する匿名サブクラスを定義します:

    Map<String, String> myMap = new HashMap<String, String>() {{
      put("a", "b");
      put("c", "d");
    }};
  • の関数初期化: マップを生成する関数を作成し、それを初期化子で使用します:

    Map<String, String> myMap = createMap();
    
    private static Map<String,String> createMap() {
      Map<String,String> myMap = new HashMap<String,String>();
      myMap.put("a", "b");
      myMap.put("c", "d");
      return myMap;
    }

後者のアプローチはよりクリーンで、匿名サブクラスに関連する潜在的な落とし穴を回避します。

以上がJava で HashMap を効率的に初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。