Hashtables works with integers. Integers are whole numbers. That's why most people use Handles: these are integers that refers to almost anything in the game.
You se a Footman, but that footman can be something like 205712423773. That number is unique for it. Trees, Special Effects, Units, Buildings, Regions, etc., have also a unique ID.
Hashtables uses 3 values: You save Z as X of Y in HashName
Lets say i want to save the number of kills each unit in my map has:
Z = Number of Kills
X = Slot #0
Y = The unit Handle ID.
Whenever a unit dies, I take the Handle ID of the Killing Unit. I save a +1 on its slot 0 (The formula would be Slot#0 = Slot#0 + 1). Then, when I want to see it on screen, I just make the game display the value saved in Slot#0 of that unit.
The interesting part is that X and Y are infinite. So, you can save any amount of information about almost anything in a hashtable. Indeed, you can create hundred of abilities just making a good use of the infinite indexes...
Etc... xD