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:
HashTable Numbers = new HashTable (); nombres.put ("One", Nouveau entier (1)); nombres.put ("Two", New Integer (2)); nombres.put ("Three", New Integer (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. Cependant, 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.
Résumer