Maison >Java >javaDidacticiel >HashMap, LinkedHashMap et TreeMap en Java : quelles sont les principales différences ?
Explorer les distinctions entre HashMap, LinkedHashMap et TreeMap
En Java, ces trois structures de données offrent différentes approches pour organiser et accéder aux données, chacun avec son unique caractéristiques.
HashMap :
HashMap donne la priorité à l'efficacité, permettant une récupération et un stockage rapides des données. Il ne maintient aucun ordre particulier et se concentre plutôt sur la mise en œuvre d'une table de hachage pour fournir des performances en temps constant pour la plupart des opérations.
LinkedHashMap :
LinkedHashMap combine les avantages de HashMap et LinkedList, préservant l'ordre d'insertion des éléments. Il utilise une structure de liste à double lien, permettant un accès rapide et ordonné aux données.
TreeMap :
TreeMap offre une interface triée, en conservant les clés par ordre croissant. commande. Il s'appuie sur une structure de données arborescente rouge-noir, qui permet une complexité temporelle logarithmique pour des opérations telles que la recherche, l'insertion et la suppression d'éléments.
Tables de hachage en Java :
Les tables de hachage, qui ne sont plus couramment utilisées, ont précédé HashMap en Java et partageaient de nombreuses similitudes, notamment leur implémentation basée sur le hachage. Ils étaient synchronisés, garantissant la sécurité des threads, mais au prix d'une surcharge supplémentaire.
Exemple :
Considérez l'extrait suivant, qui illustre les différences de sortie pour les trois structures :
Map<String, String> m1 = new HashMap<>(); SortedMap<String, String> sm = new TreeMap<>(); LinkedHashMap<String, String> lm = new LinkedHashMap<>(); // Insert elements into all three maps m1.put("map", "HashMap"); m1.put("schildt", "java2"); m1.put("mathew", "Hyden"); m1.put("schildt", "java2s"); sm.put("map", "TreeMap"); sm.put("schildt", "java2"); sm.put("mathew", "Hyden"); sm.put("schildt", "java2s"); lm.put("map", "LinkedHashMap"); lm.put("schildt", "java2"); lm.put("mathew", "Hyden"); lm.put("schildt", "java2s"); // Output the keysets and values from each map print(m1.keySet()); print(m1.values()); print(sm.keySet()); print(sm.values()); print(lm.keySet()); print(lm.values());
Sortie :
HashMap (non ordonné) :
[map, schildt, mathew, schildt] [HashMap, java2, Hyden, java2s]
TreeMap (triés) :
[map, mathew, schildt, schildt] [TreeMap, Hyden, java2, java2s]
LinkedHashMap (ordre d'insertion) :
[map, schildt, mathew, schildt] [LinkedHashMap, java2, Hyden, java2s]
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!