Maison > Java > javaDidacticiel > Le fonctionnement interne de HashMap en Java

Le fonctionnement interne de HashMap en Java

WBOY
Libérer: 2023-08-28 13:37:46
avant
1319 Les gens l'ont consulté

Le fonctionnement interne de HashMap en Java

La fonction 'hashCode' est utilisée pour obtenir le code de hachage d'un objet en Java. Il s'agit d'un objet de la superclasse Object. Il renvoie la mémoire référencée par l'objet sous forme d'entier. Il s'agit d'une fonction native, ce qui signifie que les méthodes ne peuvent pas être utilisées directement en Java pour obtenir une référence à un objet.

Pour améliorer les performances de HashMap, veuillez utiliser hashCode() correctement. Fondamentalement, cette fonction est utilisée pour calculer les valeurs du compartiment et de l'index. Voici comment cela est défini -

public native hashCode()
Copier après la connexion

Maintenant que nous avons mentionné « seau », il est important de comprendre ce que cela signifie. C'est l'élément utilisé pour stocker les nœuds. Il peut y avoir plus de deux nœuds dans un compartiment. Les nœuds peuvent être connectés à l'aide d'une structure de données de liste chaînée. La capacité d'une hashmap peut être calculée par compartiment et facteur de charge.

Capacity = number of buckets * load factor
Copier après la connexion

La fonction "equals" permet de vérifier l'égalité entre deux objets. Il est également donné par la superclasse Object. Cette fonction peut être remplacée dans une classe personnalisée en fournissant une implémentation personnalisée. Cette fonction renvoie vrai ou faux selon que les deux objets en question sont égaux.

Générez des valeurs d'index afin que la taille du tableau ne soit pas très grande, évitant ainsi outOfMemoryException. La formule pour trouver l'index d'un tableau est -

Index = hashCode(key) & (n-1) – Here n refers to number of buckets.
Copier après la connexion

Voyons un exemple -

Example

Live Demonstration

import java.util.HashMap;
class hash_map{
   String key;
   hash_map(String key){
      this.key = key;
   }
   @Override
   public int hashCode(){
      int hash = (int)key.charAt(0);
      System.out.println("The hash code for key : " + key + " = " + hash);
      return hash;
   }
   @Override
   public boolean equals(Object obj){
      return key.equals(((hash_map)obj).key);
   }
}
public class Demo{
   public static void main(String[] args){
      HashMap my_map = new HashMap();
      my_map.put(new hash_map("This"), 15);
      my_map.put(new hash_map("is"), 35);
      my_map.put(new hash_map("a"), 26);
      my_map.put(new hash_map("sample"), 45);
      System.out.println("The value for key 'this' is : " + my_map.get(new hash_map("This")));
      System.out.println("The value for key 'is' is: " + my_map.get(new hash_map("is")));
      System.out.println("The value for key 'a' is: " + my_map.get(new hash_map("a")));
      System.out.println("The value for key 'sample' is: " + my_map.get(new hash_map("sample")));
   }
}
Copier après la connexion

Output

The hash code for key : This = 84
The hash code for key : is = 105
The hash code for key : a = 97
The hash code for key : sample = 115
The hash code for key : This = 84
The value for key 'this' is : 15
The hash code for key : is = 105
The value for key 'is' is: 35
The hash code for key : a = 97
The value for key 'a' is: 26
The hash code for key : sample = 115
The value for key 'sample' is: 45
Copier après la connexion

Une classe nommée "hash_map" définit une chaîne et un constructeur. Ceci est remplacé par une autre fonction appelée « hashCode ». Ici, les valeurs des clés de hashmap sont converties en entiers et le code de hachage est imprimé. Ensuite, la fonction "equals" est remplacée et vérifie si la clé est égale à la clé du hashmap. Class Demo définit une fonction principale dans laquelle une nouvelle instance de HashMap est créée. Des éléments sont ajoutés à cette structure grâce à la fonction "put" et imprimés sur la console.

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal