hash tables
in 25+ years of writing code i've never had an occasion to use a hash table. every instance where i've seen someone use one they could have used another scheme that would have been just as small and just as fast. i'd pretty much come to the conclusion that they're useless. until today. i had o(n) things. and i wanted to temporarily create o(n) new things using two of the old things. a table would be o(n^2) in size (ugh!) but could be searched in constant time. a list would be o(n) in size but searching is also o(n) time (ugh!). the hash table turns out to be o(n) in size and nearly constant time to search. well, what do you know.