L'éditeur PHP Zimo recommande d'apprendre Java Map, qui est une compétence clé pour les apprenants avancés. Maîtriser l'essence de Java Map peut non seulement améliorer les compétences en programmation, mais également aider les apprenants à comprendre plus en profondeur l'application des structures de données et des algorithmes, établissant ainsi une base solide pour la programmation future.
Map a de nombreuses utilisations en Java. Par exemple, vous pouvez utiliser une carte pour stocker des ID utilisateur et des mots de passe, des ID de produits et des prix, ou des noms de fichiers et leur contenu. Les cartes sont également idéales pour stocker les paramètres de configuration dans une application.
Il existe trois implémentations de Map intégrées en Java : HashMap, TreeMap et LinkedHashMap. HashMap est une implémentation de Map basée sur des tables de hachage, et c'est l'implémentation de Map la plus largement utilisée. TreeMap est une implémentation de Map basée sur des arbres rouge-noir. Elle trie les paires clé-valeur dans l'ordre des clés. LinkedHashMap est une implémentation de Map basée sur une liste liée, qui conserve l'ordre d'insertion des paires clé-valeur.
HashMapHashMap est l'implémentation de Map la plus couramment utilisée. Il utilise une table de hachage pour stocker les paires clé-valeur. Une table de hachage est un
tableauoù chaque élément est une liste chaînée. Lorsque vous ajoutez une paire clé-valeur à un HashMap, le HashMap calcule le code de hachage de la clé et stocke la paire clé-valeur dans la même liste chaînée que le code de hachage. Lorsque vous récupérez une valeur d'un HashMap, le HashMap calcule le code de hachage de la clé, puis recherche la clé dans la même liste chaînée que le code de hachage. La complexité de HashMap est O(1), ce qui signifie qu'en moyenne, le temps nécessaire pour rechercher, ajouter ou supprimer une paire clé-valeur est constant. Cependant, dans le pire des cas, la complexité d'une HashMap peut dégénérer en O(n), où n est le nombre de paires clé-valeur dans la Map. En effet, la table de hachage peut devenir déséquilibrée, ce qui rend certaines listes chaînées très longues.
TreeMapTreeMap est une implémentation de Map qui trie les paires clé-valeur dans l'ordre des clés. Il utilise des arbres rouge-noir pour stocker les paires clé-valeur. Un arbre rouge-noir est un arbre de recherche binaire auto-équilibré, ce qui signifie que sa hauteur est toujours O(log n), où n est le nombre de nœuds dans l'arbre.
La complexité de TreeMap est O(log n), ce qui signifie qu'en moyenne, le temps nécessaire pour rechercher, ajouter ou supprimer une paire clé-valeur est O(log n). Cependant, dans le pire des cas, la complexité de TreeMap peut dégénérer en O(n), où n est le nombre de paires clé-valeur dans la Map. En effet, l'arbre rouge-noir peut devenir déséquilibré, ce qui fait que la hauteur de l'arbre devient O(n).
LinkedHashMapLinkedHashMap est une implémentation de Map qui préserve l'ordre d'insertion des paires clé-valeur. Il utilise des listes chaînées pour stocker des paires clé-valeur. Lorsque vous ajoutez une paire clé-valeur à un LinkedHashMap, la paire clé-valeur sera ajoutée à la fin de la liste chaînée. Lorsque vous récupérez une valeur d'un LinkedHashMap, le LinkedHashMap parcourra la liste chaînée jusqu'à ce qu'il trouve une paire clé-valeur qui correspond à la clé donnée.
La complexité de LinkedHashMap est O(n), où n est le nombre de paires clé-valeur dans la carte. En effet, LinkedHashMap doit parcourir la liste chaînée pour trouver la paire clé-valeur qui correspond à la clé donnée.
Choisissez l'implémentation de la carte appropriéeLors du choix d'une implémentation de Map appropriée, vous devez prendre en compte les facteurs suivants :
Le code suivant montre comment utiliser un HashMap pour stocker les identifiants utilisateur et les mots de passe :
Map<String, String> users = new HashMap<>(); users.put("alice", "passWord1"); users.put("bob", "password2"); users.put("charlie", "password3"); String password = users.get("alice");
Map<Integer, Double> products = new TreeMap<>(); products.put(1, 10.0); products.put(2, 20.0); products.put(3, 30.0); Double price = products.get(2);
Map<String, String> files = new LinkedHashMap<>(); files.put("file1.txt", "This is the content of file1.txt."); files.put("file2.txt", "This is the content of file2.txt."); files.put("file3.txt", "This is the content of file3.txt."); String content = files.get("file2.txt");
Conclusion
Map est une structure de données très utile en Java. Il vous permet de stocker et de récupérer des valeurs à l'aide de clés. Il existe de nombreuses implémentations différentes de Map, chacune avec ses propres avantages et inconvénients. Lorsque vous choisissez une implémentation Map appropriée, vous devez prendre en compte les performances et la sécurité des threads
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!