HashMaps are incredibly convenient, but treating them like a magical black box can make it easy to overlook where their performance comes from.
In this article, I explain how HashMaps work using a simple implementation in Rust. I go through hash collisions and linear probing, why primary clustering hurts performance, load factors, resizing, and more.
The implementation is intentionally simplified, but it gives a good picture of what's actually happening underneath a HashMap.
Let me know your thoughts or any feedback you have!