【发布时间】:2013-06-19 16:11:42
【问题描述】:
我正在尝试找出有关 java 中的散列的一些事情。 例如,如果我想在哈希图中存储一些数据,它会有某种带有哈希值的底层哈希表吗? 或者,如果有人能对散列的工作原理给出一个简单明了的解释,我将不胜感激。
【问题讨论】:
-
据我了解,散列(在您使用它的上下文中)会产生一个值,该值对于两个相等的对象来说是相等的,而对于两个不相等的对象来说不太可能相等平等的。这加速了 .contains() 和其他调用 .equals() 的方法的问题。一个简单的例子是,如果一个类有成员 x 和 y,那么哈希码可能是 71*(x+71*y),但是当你覆盖 equals 时,IDE 会为你生成一个好的哈希
-
但是哈希码在计算之后到底去哪里了?它是否存储在某种底层哈希表中?
-
你懂hashtables吗?这不是是刻薄的评论;说真的,如果你真的想了解散列是如何工作的,你需要了解数据结构。 Wikipedia article 很棒,The Algorithm Design Manual 中的解释也是如此。
-
我会回答这个问题,但维基百科已经有一个关于一般数据结构意义上的哈希表的优秀页面 - en.wikipedia.org/wiki/Hash_table
-
非常感谢!希望我能解决
标签: java algorithm hash hashcode