如何使用HashSet实现HashTable

时间:2012-06-08 16:30:35

标签: data-structures hashtable

我被问到以下面试问题:

  

假设你有一个提供普通的HashSet实现   接口。如何使用一个或多个HashSet实例   实现一个HashTable提供普通的HashTable接口它的普通时间限制吗?

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

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

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

1 个答案:

答案 0 :(得分:5)

执行此操作的一种标准方法是将哈希表视为键/值对的哈希集,其中键/值对的哈希码纯粹是键的哈希码,而相等比较函数则表示任何两个键/值对在键相等时精确相等。这样,正常的哈希集操作将以

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

希望这有帮助!