【发布时间】:2017-08-05 04:49:10
【问题描述】:
在数据结构讲座(现在仍在进行)中,我们的讲师解释说哈希码对内存地址很有用。
这是有道理的,但后来他补充说“除了数字和字符串键 - 为什么?”
我认为原因是因为那时我们不能再应用哈希函数,但据他说这不是真的。
因为我们既可以为字符串实现不同的哈希函数,也可以使用内存地址的整数表示。
他声称原因是因为字符串是数组,而数字也可以是数组类型。并且应用哈希函数只会将该字符的一部分分配给“桶数组”。
问题是我们的讲师不是做课堂笔记的人(他使用的是去年的前任讲师的),我认为他今天所说的不正确,请问有人能告诉我吗?
【问题讨论】:
-
“哈希码对内存地址有用”是什么意思?
-
你好,他告诉我们的是hash码用于整数转换(适用于长度小于或等于整数类型位数的key)、内存地址和组件求和
-
没有上下文,整个讨论是不可理解的。
-
我们的课程刚刚开始学习哈希表,还没有做太多事情。我们从散列函数和散列表的定义开始。然后讲义说明了为什么哈希码很有用。它说“内存地址:我们将键对象的内存地址重新解释为整数(所有 Java 对象的默认哈希码)一般来说很好,除了数字和字符串键 - 为什么?”
-
因为数字和字符串通常按内容而不是身份进行比较,当然这也适用于许多记录类型。
标签: data-structures hash hashcode