top of page


Tutorials, Errors and Exceptions
Its a journey to understand things better. It will have tutorials, any error/exceptions encountered, its resolutions and lots of learning.

Search


#LC746 - Minimum Cost Of Climbing Stairs
In this post we will look into the the leetcode #746 problem to find the minimum cost of climbing stairs. This is also a good example to...
Ankit Agrahari
Nov 24, 20212 min read


Using Twilio for Sending WhatsApp Message in Java
In this blog post, we will try to send WhatsApp message in Java using Twilio account. Prerequisite: Create a free account in Twilio. Once...
Ankit Agrahari
Nov 24, 20212 min read


Binary Tree Traversal
In this post we will look into the different ways to traverse a Binary Tree. In a binary tree, you can traverse in two different ways:...
Ankit Agrahari
Nov 23, 20212 min read


Target Machine Actively Refused it - MongoDB Issue
In this post we will discuss one of the issue encountered after installing MongoDB on my windows machine. This from the previous post...
Ankit Agrahari
Nov 19, 20212 min read


CRUD operation in MongoDB
In this post we will create a Java application which will interact with MongoDB to perform all the CRUD operations. What is NoSQL...
Ankit Agrahari
Nov 18, 20214 min read


Exploring Spring Thymeleaf
In this post we will be creating a registration form which will include textbox, dropdown with multi-select option, file pickers and then...
Ankit Agrahari
Nov 17, 20216 min read


Set Swappiness in Linux
In this post we will look into how to change the swappiness value in Linux. Swappiness is the kernel parameter that defines how much your...
Ankit Agrahari
Nov 17, 20211 min read
Contact
bottom of page
















![You think HashMap is always O(1).
It isn't. Here's what actually happens. 🧵
HashMap stores pairs using `index = hash(key) % capacity` — direct slot access, no scanning. Pure O(1). Until two keys land on the same slot. That's a collision — not a bug, a math inevitability.
Two ways to fix it 👇
🔗 Chaining — each bucket holds a linked list. Collisions append to the list. Simple, handles high load, easy deletion. Downside: pointer overhead, poor cache performance, chains degrade to O(n) at high load. Java's fix? At 8 nodes, the list auto-converts to a Red-Black Tree → O(log n) worst case.
📦 Open Addressing — no linked lists. Collision at slot X? Probe X+1, X+2 until empty. Cache-friendly, zero memory overhead. Downside: deletion needs tombstone markers, and keys cluster together making future collisions worse. Used by C++, Go, Redis.
⚖️ Load Factor = entries ÷ capacity
🟢 Below 0.5 → rare collisions, wasted memory
🟠 0.75 → Java's sweet spot, triggers resize + rehash
🔴 Above 0.9 → collision cascade, O(n) territory
Double hashing kills clustering by varying the probe step per key:
`probe(i) = (h1 + i × h2) % m`
Elements scatter evenly. No bunching. O(1) preserved.
The truth: HashMap is O(1) until a bad hash function, wrong load factor, or wrong strategy turns it into O(n).
Three things protect you:
→ Well-distributed hash function
→ Load factor under 0.75
→ Right collision strategy for your use case
💬 Java interview question: what happens when a chain hits 8 nodes?
Drop your answer below 👇
🔖 Save this before your next interview.
#java #hashmap #datastructures #dsa #algorithms
[codinginterview programming 100daysofcode]](https://scontent-lga3-3.cdninstagram.com/v/t51.71878-15/641188820_1859196944673752_5535080284006983284_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=102&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=bw__s4rY2dUQ7kNvwE1_8a0&_nc_oc=Adq62kNskfNGJjLcMxQhqyGv9k8-_fc1naS3MnY1PdgSUzrgEOoI_fFaVdnrYCfoArA&_nc_zt=23&_nc_ht=scontent-lga3-3.cdninstagram.com&edm=ANo9K5cEAAAA&_nc_gid=Ey3_J1h7HFZGPJ3IfNvygw&_nc_tpa=Q5bMBQFcM7dwo4YzpoWjPOoRW-R-QirHkSsJPghGSIVPw0iMDIj46t9_7arlBKMhrOVukF04xddvTqZy&oh=00_Af7NQ8QqsJOxO9tfGSxdBbQHolgyPH0XS64W0pafzreXOw&oe=6A0A7DFE)


![A Bloom filter is a space-efficient probabilistic data structure used to test whether an element is a member of a set. The key trade-off: it can tell you
- with certainty that an element is not in the set,
- but it can only say an element might be in the set — never with 100% certainty.
How it works ?
- A bit array of size m, initialized to all zeros
- k independent hash functions, each mapping an element to a position in [0, m-1]
- To insert element x:
- Run x through all k hash functions → get k positions
- Set the bit at each of those positions to 1
- To check if element x exists:
- Run x through all k hash functions → get k positions
- If all bits at those positions are 1 → probably in set
- If any bit is 0 → definitely not in set
This is visually shown in the post how the bits are set during insertion or deletion.
If you want the tool for the visual representations, comment on this post, and I'll share it.
#bloomfilter #datastructure #design #softwareengineering #backenddeveloper](https://scontent-lga3-2.cdninstagram.com/v/t51.82787-15/642386646_17867541405570256_7034332257132483480_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=108&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=geOK4Y5Vgc8Q7kNvwEh_JS_&_nc_oc=AdpT3OojRCArGnfJV8GgOgPxgTgLW7iTId4DKaLL9DlVfwY2azR1SCrjgygoFVO65VM&_nc_zt=23&_nc_ht=scontent-lga3-2.cdninstagram.com&edm=ANo9K5cEAAAA&_nc_gid=Ey3_J1h7HFZGPJ3IfNvygw&_nc_tpa=Q5bMBQHBNR-bZpY48whM5ZbiBLC0ohN75vDZs9xFkAf8NxtHb7a9WRd7q95Ggp8HtvSuGZfg7Rop8fFd&oh=00_Af7dM8s0XjnaiSOkVL9fiVuXb546FjyY0f9lf30XKFKldQ&oe=6A0A74DC)










