我正在使用二次探测实现一个开放哈希表。我的数据库是java String[](我的对象仅限于字符串)。对于删除,我使用延迟删除,但我希望实现它真正有效。我相信有比持有一个全新的标志数组(活动/空/删除)更优雅的解决方案。
我认为在删除时分配一些已知的常量字符串(例如",空字符串),并在需要时,将单元格内容与字符串本身的指针进行比较(使用==而不是string .equals)。这样我就知道单元格被删除了,但是活动单元格可以保存任何类型的字符串(包括空字符串),因为它永远不会指向到我们的常量。
我的想法有什么问题吗?使用单个Object
s数组,元素可以是null
(空闲槽位),String
(满槽位)和特殊
private static final Object TOMBSTONE = new Object();