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


Junit5 with Mockito Framework
In this blog post we will talk about one of the testing framework which I wanted to try it on, and rather use it in my day to day coding....
Ankit Agrahari
Apr 18, 20227 min read


AES Algorithm with GCM Mode in Java
In this post we will encrypt and decrypt a given phrase using AES algorithm in GCM mode. This will be more on how to do it. I am not an...
Ankit Agrahari
Apr 9, 20226 min read


Spring4Shell - Zero Day Vulnerability in Spring Framework
In the days of Vulnerabilities, the famous Spring framework is the latest victim, which has quite a turns of event for the CVE identified...
Ankit Agrahari
Apr 1, 20223 min read


Day to Day Lambda & Functional Programming in Java 8
If you have seen lately, everyone has shifted to Java 8 and is more or less trying to move from lengthy code blocks to few lines/precise...
Ankit Agrahari
Mar 28, 202212 min read


Custom Iterators in Java
This is a bit embarrassing to start with, but lets say I got this question and was quite dumb stuck on how to write a custom iterator....
Ankit Agrahari
Feb 12, 20224 min read


Multi Release Functionality
In this post we will explore one of the best feature provided by Java 9, its importance in present day development and how it will be a...
Ankit Agrahari
Feb 10, 20224 min read


Web Socket Client - Receiving Stream of Messages
In this post we will be creating a Web Socket Client which will receive all messages coming from the Web Socket Server. Web Sockets The...
Ankit Agrahari
Jan 23, 20223 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__s4rY2dUQ7kNvwE1oA0o&_nc_oc=AdoF1byq3ec5OxhX5r0hX3q2iQyvkmn0r9RhpFwoqzaiBviP5CW1mTbIEqmQRyi_6ek&_nc_zt=23&_nc_ht=scontent-lga3-3.cdninstagram.com&edm=ANo9K5cEAAAA&_nc_gid=_KOEw782fpYs069-0-Am-g&_nc_tpa=Q5bMBQFKeesQ2dIui-EQKCR1fEX1cJXj8qCJgTzGAGwsvOLyoBFTukKRAYMg-9qYKzRGUsp13ZEU4rmb&oh=00_Af4yIiaeyan9PIYzx512dB0P_uHbSHCNGivvvPFll88e8Q&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=geOK4Y5Vgc8Q7kNvwHPPno6&_nc_oc=AdpkwVLfB0rcjh_ic3mVKJ1EjB4QaNWw_AvYi-4wjWaf-B6BHoDU-w7efujVjkDFORA&_nc_zt=23&_nc_ht=scontent-lga3-2.cdninstagram.com&edm=ANo9K5cEAAAA&_nc_gid=_KOEw782fpYs069-0-Am-g&_nc_tpa=Q5bMBQGLlJM95IAzZ8sE-mt1KtbUfvvd1HytdHMfRUJIDkNRy6CbgGu6Ce6pQ6D9mdC1j-llUoHbqKyG&oh=00_Af63OQ6aTCbIC0u1C3Jf_reDdnwIt1BaDLseZaHX7P9TUg&oe=6A0A74DC)










