【问题标题】:When would I ever not use a hashmap?我什么时候不使用哈希图?
【发布时间】:2013-12-07 03:52:25
【问题描述】:

是否有任何时候使用 hashmap 不是绝对可行的方法?一般来说,hashmaps 看起来像树、链表等。有没有时候不使用哈希?

【问题讨论】:

  • 我在这里回答了基本相同的问题:stackoverflow.com/questions/20170244/….
  • Hashmap 应该是你最后的手段,而不是用锤子敲每个钉子。它为您提供零保证,所以如果它是您能想到的解决任何问题的唯一解决方案,那意味着您不知道如何解决任何问题。 (如果你这样做了,那么你实际上会解决它,这意味着你可以提供某种性能保证。)

标签: hash


【解决方案1】:

如果您的所有对象键都具有相同的hashCode,或者您甚至没有某种键,或者您有空键,或者您的算法或程序不需要哈希图。例如,您将如何使用 hashmap 实现图形?堆呢?一套?

【讨论】:

  • 一个图可以很容易地用散列图实现——从节点散列到相邻节点的向量。集合也很容易——从集合的成员散列到一个虚拟值。堆栈也很容易,即使有点毫无意义——通过从数字索引到值的散列将散列映射用作“数组”,并存储当前使用的最高索引。
  • @AlexD 注意我并没有说这是不可能的。但是正如您在answer 中指出的那样,它不是一个普遍适用的数据结构;并且至少使用堆栈,我确信使用其他实现策略会获得更好的性能。
  • 当然。这就是为什么我说使用映射来实现堆栈是没有意义的——实现会比使用向量或链表更慢且更复杂。
猜你喜欢
  • 2016-07-11
  • 2015-03-05
  • 2011-01-21
  • 2014-11-04
  • 2012-02-08
  • 2011-04-25
  • 2022-12-03
  • 1970-01-01
相关资源
最近更新 更多