Skip to main content

How does a hash map work internally in Java?


Hash map work internally in Java


Image result for hash map internal working flow


























Basically, HashMap is an array of Entry class, a static inner class defined in HashMap is as below:
static class Entry implements Map. Entry {
final K key;
V value;
Entry next;
final int hash;
//getters and setters
}
Each element in Hashmap stores in it a key, its value, a reference to next entry in case hash value is the same for two entries, in that case, a linked list will be formed.
Default initial capacity of a HashMap is 16 i.e a HashMap is initialized with a default 16 sized array.
Now, let us see what happens when we put an element into HashMap.
Following is the code for put method in hashmap:
public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
int hash = hash(key.hashCode());
int i = indexFor(hash, table.length);
for (Entry e = table[i]; e != null; e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
}
modCount++;
addEntry(hash, key, value, i);
return null;
}
private V putForNullKey(V value) {
for (Entry e = table[0]; e != null; e = e.next) {
if (e.key == null) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
}
modCount++;
addEntry(0, null, value, 0);
return null;
}

Lets decode the above lines of code;

1)As the HashMap allows values to be stored with null keys in the map, firstly we check if key is null or not.
2)If key is null,putForNullKey method is called and null key value is placed at 0th position of array.
for (Entry e = table[0]; e != null; e = e.next) {//As each element with same hashvalue forms linked list in a hashmap array, we iterate the element using a for loop.If e==null, we add the new element.

3)If key is not null, we need to find the index in the array where we will store our element and this is done using hashing.
int hash = hash(key.hashCode());//We calculate a unique hash corresponding to each element.
int i = indexFor(hash, table.length);//Passing the hash and array length we find the position in array to store the element.
static int indexFor(int h, int length) {
return h & (length-1);
}
As you can see we do & operation between array length and hash value and thus a location is found from 1to16, so suppose hash value is 00000000 00010000 & 00000000 00010000, will give an index of 16.
4)Next we check if an element entry exists at above found index if it doesnt exist we add the new element entry but if an entry element already exists at the index position , here comes the linkedlist into the picture.
5)In the if condition if (e.hash == hash && ((k = e.key) == key || key.equals(k))) , we compare the hash value and a comparison with the equals method written for the object or for the same references.
6)If the above condition is true, the old value is replaced with the new value.
7)If the 5th condition is false, we iterate the linked list until we find the exact key location and put the entry element.

Comments

Popular posts from this blog

java Interview Goal

                                                  Hi All,         I write this blog for Fresher  And  Experience  who have start Career In IT_Industry With  java Technology, I am not a professional blogger, I am  working  as Java Developer since last 2 years,   The main reason to write this blog is to share my Experience In Interviews. ABOUT THE AUTHOR           Nice to meet you, I’m Akshay Ingole. I’m a not a professional blogger ,  I am  working  as Java Developer since last 2 years,   The main reason to write this blog is to share my Experience In Interviews as well as share the topics that trending in java.   I hope It is Useful For All. 

Understanding DeepSeek: A New Player in AI

DeepSeek is a Chinese artificial intelligence (AI) company founded in 2023, dedicated to advancing artificial general intelligence (AGI). Their flagship model, DeepSeek-R1, launched in January 2025, is an open-weight AI model designed to perform complex reasoning tasks, including solving scientific problems.  How DeepSeek Works DeepSeek-R1 operates as a reasoning model, capable of autonomous exploration and information synthesis. It can navigate the web, select pertinent information, and compile detailed reports, automating tasks typically handled by humans. This functionality positions DeepSeek-R1 as a versatile tool for various applications, from research to customer service.  DeepSeek's Impact on the AI Landscape DeepSeek's emergence has disrupted the AI sector, challenging established models like OpenAI's ChatGPT. Its open-weight approach and cost-effective development have made advanced AI capabilities more accessible. Chinese companies and government agencies have rap...

Ace Your Java Interview: Top 50 Java Interview Questions & Answers (2025)

  Introduction Java continues to be a top programming language in 2025 , widely used in enterprise applications, microservices, cloud computing, and AI-based systems . If you're preparing for a Java developer interview , you must be well-versed in Core Java, Java 8-21 features, Spring Boot, Microservices, and Cloud technologies . This guide covers the top 50 Java interview questions for freshers and experienced professionals , ensuring you are ready for your next interview! Table of Contents Core Java Interview Questions Java 8, Java 11, and Java 21 Features OOP and Design Patterns Multithreading and Concurrency JVM, Garbage Collection & Memory Management Collections Framework Spring Boot & Microservices Cloud Technologies (AWS, Azure, GCP) Real-World Java Interview Scenarios 1. Core Java Interview Questions Q1: What are the key features of Java? Answer: Platform Independence – Java runs on JVM , making it OS-independent. Object-Oriented – Java follows...