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

Le fonctionnement interne de HashMap en Java

WBOY
WBOYavant
2023-08-28 13:37:461295parcourir

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()

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

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.

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")));
   }
}

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer