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


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


#LC438 - Find All Anagrams - Sliding Window Algorithm
In this topic we will cover the leetcode #438 Find all anagram programming question. Problem Statement: Given two strings s and p, return...
Ankit Agrahari
Nov 16, 20212 min read


Maven - Manifest file and Jar with Dependencies
In this post, we will build a simple maven project which will create two jar files, which can be executed using below command java -jar...
Ankit Agrahari
Nov 16, 20211 min read


IV - Recognizing Parts Of Speech Using Apache OpenNLP
In this post we will discuss on recognizing parts of speech in a given sentence using Apache OpenNLP library. This is part of the series...
Ankit Agrahari
Nov 15, 20212 min read


III - Named Entity Recognition - Apache OpenNLP
In this series of learning Natural Language Processing with Apache OpenNLP library in Java, we will discuss on NamedEntityRecognition,...
Ankit Agrahari
Nov 15, 20212 min read


II - Tokenization using Apache OpenNLP
In this post we will create tokens of the given string using Apache OpenNLP library. This post is a continuation of the previous post...
Ankit Agrahari
Nov 14, 20213 min read


I - Sentence Segmentation Using Apache OpenNLP
In this post, we will discuss on how to find sentences in a block of text, which can be a paragraph or an entire book. We will be using...
Ankit Agrahari
Nov 14, 20213 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-den2-1.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=PyoojJvEubgQ7kNvwG6nWad&_nc_oc=AdqmhBQh1QKJInQDOJhRM96yXCvqDzzOSNbInR3S6F1Ji59AVAaFRlRAoS4E0WWGHbA&_nc_zt=23&_nc_ht=scontent-den2-1.cdninstagram.com&edm=ANo9K5cEAAAA&_nc_gid=Rr7SLdAcQRw6PjX_ODfFgQ&_nc_tpa=Q5bMBQFZkYZf4vqir32zsPdA_vqqQSt-D_MpmFh-VtJgUufJx49JeN2SMjkHgcLrBfx1hWe1hSwmnVh-&oh=00_Af9c18zveq64sFtwZJzodOwOEjXf7IzRuciAd8ygcctMeA&oe=6A33243E)


![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-den2-1.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=1L1fwQd3Tu0Q7kNvwFwezbn&_nc_oc=AdoRu9wNASHM5y_Pcb89KZQCunJLV8Ifd_KJkZex9OaBxGFLHNaAD04y1_dCRX8BCsc&_nc_zt=23&_nc_ht=scontent-den2-1.cdninstagram.com&edm=ANo9K5cEAAAA&_nc_gid=Rr7SLdAcQRw6PjX_ODfFgQ&_nc_tpa=Q5bMBQEYF417rEq0w3KlawJtpwijr4vpdOmgLWzRz4ykP4siIWOCO5BFU0SZDnQY7wuwoY7WfMmnA75M&oh=00_Af9lUDGk0vxPDiFOHd7mWJWolCGTmfDsy4gHVApaIshO5w&oe=6A331B1C)




