data-structures - 如何使用 HashSet 实现 HashTable

标签 data-structures hashtable

我被问到以下面试问题:

Suppose you have a HashSet implementation providing its ordinary interface. How can you use one or more instances of HashSet to implement a HashTable providing the ordinary HashTable interface it its ordinary time constraints?

我问了两次,但他们的意思是这样的,而不是相反(使用 HashTable 实现 HashSet 非常简单,例如 Java 就是这样做的)。

我回答说不可能。这个答案似乎并没有让面试官满意,所以我正在寻找更好的答案。即使在互联网和 Stack Overflow 上搜索,我也找不到解决方案。

我认为这是一个棘手的问题,但为了确保我在这里发布这个问题。

最佳答案

实现此目的的一种标准方法是将哈希表视为键/值对的哈希集,其中键/值对的哈希码纯粹是键的哈希码,并且相等比较函数表示:当任意两个键/值对的键相等时,它们就精确相等。这样,正常的哈希集操作将以以下方式存储键/值对

  • 不会存储具有相同键的两个键/值对,并且
  • 在哈希表中查找键会找到具有该键的键/值对对象,从中可以查找值。

希望这有帮助!

关于data-structures - 如何使用 HashSet 实现 HashTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952692/

相关文章:

c++ - 双探测哈希表

python - 哈希表和 Python 字典有什么区别?

matlab - 将 Matlab 转换为 Octave 是否有 containers.Map 等价物?

c - 使用双指针在 C 中插入链表

java - 用于相互比较树的树结构

java - 我可以使用 "relative"变量创建 HashMap 吗?

c - 数组数据结构(和)数组数据类型如何理解差异

具有良好性能的c++ map实现

powershell - Powershell-哈希表转义引号

c++ - 为什么 unordered_map 由于 "reserve"有足够的桶时会增加大小?