【问题标题】:Efficient way to implement lazy deletion in open hash using java使用java在开放哈希中实现延迟删除的有效方法
【发布时间】:2014-06-24 21:54:45
【问题描述】:

我正在使用二次探针实现一个开放哈希表。我的数据库是 java String[](我的对象仅限于字符串)。对于删除,我使用延迟删除,但我想真正有效地实现它。我确信有比持有一组全新的标志(活动/空/已删除)更优雅的解决方案。

我想在删除时分配一些已知的常量字符串(例如“”,空字符串),并在需要时将单元格内容与该字符串本身的指针进行比较(使用 == 而不是 String.equals)。这样我就知道单元格已被删除,但活动单元格可以保存 任何类型的字符串(包括空字符串),因为它永远不会指向我们的常量。 p>

我的想法有问题吗?

【问题讨论】:

  • 低效怎么办?
  • 我不认为你可以在不使用一些额外存储空间的情况下懒惰地删除密钥,例如删除标志。

标签: java string hashtable implementation quadratic-probing


【解决方案1】:

使用Objects 的单个数组,元素可以是null(空闲槽)、String(满槽)和特殊元素

private static final Object TOMBSTONE = new Object();

用于延迟删除的插槽。

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 2019-03-31
    • 1970-01-01
    • 2019-04-17
    • 2015-07-26
    • 2018-05-20
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    相关资源
    最近更新 更多