如果我有两个物理上相同但逻辑上不同类型的数据,那么我应该使用多少哈希来存储它们?

时间:2013-04-14 06:25:08

标签: coding-style

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

2 个答案:

答案 0 :(得分:0)

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

就像说你可以使用扳手拧紧螺栓或打开窗户,因此它应该像2个不同的物体一样,这是不正确的,因为它是你的使用方式区别,而不是对象本身。

答案 1 :(得分:0)

如果将它们存储在同一个哈希表中,则会运行(可能很小或不存在)用另一个哈希表覆盖它们的风险。例如,您要存储名字和姓氏(两个字符串)。可以想象有一个名字叫“琼斯”的人和另一个名字叫“琼斯”的人。

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

话虽这么说,我仍然希望将逻辑项分成他们自己的哈希表,而没有非常强烈的理由将它们组合起来。

  • 处理它们的代码可能更容易编写和维护。
  • 调试问题会更容易。
  • 较小的哈希表可能会减少每个桶的项目并略微提高性能。