Home  >  Article  >  Java  >  The inner workings of HashMap in Java

The inner workings of HashMap in Java

WBOY
WBOYforward
2023-08-28 13:37:461295browse

The inner workings of HashMap in Java

The function ‘hashCode’ is used to get the hash code of an object in Java. This is an object of the superclass Object. It returns the memory referenced by the object as an integer. It is a native function, which means that methods cannot be used directly in Java to obtain a reference to an object.

In order to improve the performance of HashMap, please use hashCode() correctly. Basically, this function is used to calculate bucket and index values. The way it is defined is as follows -

public native hashCode()

Now that we have mentioned “bucket”, it is important to understand what it means. It is the element used to store nodes. There can be more than two nodes in a bucket. Nodes can be connected using a linked list data structure. The capacity of a hashmap can be calculated by bucket and load factor.

Capacity = number of buckets * load factor

The function "equals" is used to check equality between two objects. It is also given by the superclass Object. This function can be overridden in a custom class by providing a custom implementation. This function returns true or false depending on whether the two objects in question are equal.

Generate index values ​​so that the size of the array is not very large, thereby avoiding outOfMemoryException. The formula to find array index is -

Index = hashCode(key) & (n-1) – Here n refers to number of buckets.

Let’s see an example -

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

The class named "hash_map" defines a string and a constructor. This is overridden by another function called "hashCode". Here, the hashmap key values ​​are converted to integers and the hash code is printed. Next, the "equals" function is overridden and checks if the key is equal to the key of the hashmap. Class Demo defines a main function in which a new instance of HashMap is created. Elements are added to this structure using the "put" function and printed on the console.

The above is the detailed content of The inner workings of HashMap in Java. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete