0

假设我有两组项目,除了它们在程序中的逻辑目的之外,它们是相似的。为它们分配两个散列是更好的编程实践,还是我应该只使用一个散列?

4

2 回答 2

0

如果将它们存储在同一个哈希表中,则会冒着(可能很小或根本不存在)被另一个覆盖的风险。例如,您正在存储名字和姓氏(两个字符串)。可以想象,一个人的名字是“Jones”,另一个人的姓是“Jones”。

如果上述情况不可行,则没有技术原因不能使用单个哈希表。散列到相同值的项目将与映射到同一存储桶的具有不同散列值的其他项目一起存储在同一个存储桶中,但是只要您在散列冲突后检查实际相等,就可以了。

话虽如此,我仍然更愿意将逻辑项分离到它们自己的哈希表中,而没有非常充分的理由将它们组合起来。

  • 处理它们的代码可能更容易编写和维护。
  • 调试问题会更容易。
  • 较小的哈希表每个桶的项目可能会更少,并略微提高性能。
于 2013-04-15T21:01:08.257 回答
0

如果项目集相同,则哈希值也应该相同。

这就像说您可以使用扳手拧紧螺栓或打开窗户,因此它应该表现得像 2 个不同的对象,这是不正确的,因为区分的是您的使用方式,而不是对象本身。

于 2013-04-14T06:29:41.507 回答