If upon looking up an entry I find another value in that slot (bound to happen) I'd check the next slot (which our CPU has probably prefetched already) until we reach a slot which has never held a value. I'd have the type field distinguish always-was empty vs "tombstoned" slots.
To set a value in the record under a given key, I'd locate the slot for that key or the first empty slot after where it should be.
As for handling strings...
4/5!
GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.
All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.