Maison >Java >javaDidacticiel >Comment puis-je initialiser efficacement un HashMap en Java ?

Comment puis-je initialiser efficacement un HashMap en Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 13:52:13758parcourir

How Can I Initialize a HashMap in Java Efficiently?

Initialiser un HashMap Literall

L'initialisation d'un Java HashMap avec des paires clé-valeur spécifiques de manière concise et littérale a été une fonctionnalité insaisissable pour les développeurs. Cependant, les progrès de Java ont ouvert la voie à une création simplifiée de cartes.

Java 9 et versions ultérieures : méthodes d'usine

À partir de la version 9 de Java, la classe Map introduit des méthodes d'usine qui rationalisent la création de cartes :

  • Map.of : Peut créer des cartes avec jusqu'à 10 éléments en utilisant une syntaxe concise :

    Map<String, String> test1 = Map.of("a", "b", "c", "d");
  • Map.ofEntries : Crée des cartes avec n'importe quel nombre d'éléments :

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

Cependant, il est important de noter que ces méthodes aboutissent à des cartes immuables. Pour les cartes mutables, vous pouvez créer une copie en utilisant :

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

Java 8 et versions antérieures : classe ou fonction anonyme

Avant Java 9, l'initialisation littérale directe n'était pas prise en charge. Pour obtenir un effet similaire, vous pouvez utiliser les techniques suivantes :

  • Classe anonyme avec initialiseur : définissez une sous-classe anonyme qui initialise la carte dans son constructeur :

    Map<String, String> myMap = new HashMap<String, String>() {{
      put("a", "b");
      put("c", "d");
    }};
  • Fonction d'initialisation : Créer une fonction pour générer une carte et utilisez-la dans l'initialiseur :

    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;
    }

Cette dernière approche est plus propre et évite tout piège potentiel associé aux sous-classes anonymes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn