Just a thing that's been bugging me lately. I've read a considerable amount of theory on as well as implemented hash tables and for pretty much every implementation of them in different languages as well as similar data types (C++ std::map) you are able to iterate the keys and values, or even get an array of the keys and values. I'm wondering how this is done as I have only seen hash tables in the form of a large array where you hash a key into an index for that array. Iterating such an implementation would require brute force unless you add some additional information that can tell you about the location of things.