Same here. Wrote a program for the company I worked at and it was used a countless number of times for over 20 years. I needed to keep track of cell names in Stream files (graphical databases) and used a 16K element hash array. If multiple names hashed to the same value, each array entry could be a linked list.I implemented a hash table for this purpose years ago and have used it scads of times. Mine handled collisions by inserting the new element at the next non-NULL location in the array (the index of which is derived from the hash function).
Or use a better hash function. I studied hash performance in my program for years. In most cases, a very small percentage of names hashed to the same value.If it happens a lot, use a larger array.
Since you only allocate storage for hash values that are used, it doesn't require significantly more memory than other alternatives.Obviously this method requires a lot of memory