Introduction de la carte
Carte la clé de l'objet de la valeur. Une carte ne peut pas contenir des clés en double; Chaque touche ne peut que mapper à une seule valeur au maximum. Cette interface remplace la classe de dictionnaire, qui est entièrement une classe abstraite, pas une interface.
L'interface de carte offre trois vues de collecte qui permettent de visualiser le contenu d'une carte sous la forme d'un ensemble de clés, d'un ensemble de valeur ou d'un ensemble de relations de mappage de valeurs de clé. L'ordre de mappage est défini comme l'ordre dans lequel l'itérateur renvoie ses éléments sur la vue de collection de la carte. Certaines implémentations de cartographie garantissent explicitement leur commande, comme la classe Treemap; D'autres ne garantissent pas leur commande, comme la classe Hashmap.
Remarque: Des soins supplémentaires doivent être pris en utilisant des objets mutables comme clés de mappage. Lorsqu'un objet est une clé d'une carte, si la valeur de l'objet est modifiée d'une manière qui affecte la comparaison égale, le comportement de la carte sera incertain. Un cas particulier selon lequel cela interdit est qu'une carte ne se permet pas incluse comme clé. Bien qu'une carte soit autorisée à s'inclure en valeur, soyez prudent: la définition des méthodes Equals et HashCode ne sera plus explicite sur de telles cartes.
Interface de carte:
MAP fournit un mappage de la clé à la valeur. Une carte ne peut pas contenir la même touche et chaque clé ne peut cartographier qu'une seule valeur. L'interface MAP offre trois types de vues de la collection. Le contenu de la carte peut être considéré comme un ensemble de collections de clés, un ensemble de collections de valeur ou un ensemble de mappages de valeurs clés.
Classe de hachage
Le hashable hérite de l'interface MAP et implémente une table de hachage avec un mappage de valeur clé. Tout objet non nulle peut être utilisé comme clé ou valeur.
Utilisez Put (Key, Value) pour ajouter des données, utilisez Get (Key) pour récupérer les données. La surcharge de temps de ces deux opérations de base est constante. Le hachage ajuste les performances par les paramètres de capacité initiale et de facteur de charge. Habituellement, le facteur de charge par défaut 0,75 peut mieux atteindre le temps et l'équilibre de l'espace. L'augmentation du facteur de charge peut économiser de l'espace, mais le temps de recherche correspondant augmentera, ce qui affectera les opérations comme Get and Put.
Un exemple simple d'utilisation d'un hashtable est le suivant: Mettez 1, 2 et 3 dans un hashtable, et leurs clés sont "une", "deux", "trois" respectivement:
Nombres de hashtable = new hashTable (); nombres.put ("un", nouvel entier (1)); nombres.put ("deux", nouvel entier (2)); nombres.put ("trois", nouvel entier (3));Pour éliminer un nombre, comme 2, utilisez la clé correspondante:
Entier n = (entier) nombres.get ("deux"); System.out.println ("deux =" + n);Étant donné qu'un objet en tant que clé déterminera la position de la valeur correspondante en calculant sa fonction de hachage, tout objet en tant que clé doit implémenter le code de hash et égal aux méthodes. Le HashCode et l'égalité des méthodes héritent de l'objet de classe racine. Si vous utilisez une classe personnalisée comme clé, soyez très prudent. Selon la définition de la fonction de hachage, si les deux objets sont les mêmes, c'est-à-dire obj1.equals (obj2) = vrai, leur code de hash doit être le même, mais si les deux objets sont différents, leurs codes de hashs peuvent ne pas être différents. Si les codes de hash de deux objets différents sont les mêmes, ce phénomène est appelé conflit. Le conflit augmentera les frais généraux de temps de fonctionnement du tableau de hachage. Par conséquent, essayez de définir la méthode HashCode () pour accélérer le fonctionnement de la table de hachage.
Si le même objet a des codes de hash différents, l'opération sur la table de hachage aura des résultats inattendus (la méthode GET attendue renvoie NULL). Pour éviter ce problème, il vous suffit de vous souvenir d'une seule chose: vous devez réécrire la méthode Equals et HashCode en même temps, plutôt que d'écrire l'une d'entre elles.
Le haschable est synchronisé.
Classe de hashmap
Hashmap est similaire à Hashable, la différence est que le hashmap est asynchrone et permet une valeur nul et une clé nul et une clé nul. , mais lorsque Hashmap est considéré comme une collection (la méthode VALEUR () peut renvoyer une collection), sa surcharge de temps de sous-opération itérative est proportionnelle à la capacité de HashMAP. Par conséquent, si les performances des opérations d'itération sont très importantes, ne définissez pas la capacité d'initialisation du hashmap pour être trop élevée ou si le facteur de charge est trop faible.
Classe faiblehashmap
LowerHashMap est un hashmap amélioré qui met en œuvre la «référence faible» à la clé. Si une clé n'est plus référencée à l'extérieur, la clé peut être recyclée par GC.
Ce qui précède est une introduction à l'interface de carte Java. Les élèves qui apprennent la programmation Java peuvent y faire référence.