Some programming languages such as python, Java and C++11 have hash tables (although sometimes under different names with extended functionality) as part of their standard library. I would like to understand from a high level algorithmic point of view what has been implemented. Specifically:
- What function of the keys is used to give the location to place the data (i.e. what is the hash function that is used)?
- Which algorithms do they use for resolving collisions? As an example, do any of them use simple chaining?
- Is there any use of randomness to pick the hash functions?