哈希码与对象的引用或地址之间的区别?

时间:2010-09-13 13:00:52

标签: java reference hashcode

哈希代码与对象的引用或地址之间的区别?

3 个答案:

答案 0 :(得分:4)

在JavaME中,这三件事是无关的。

对象的hashCode是它的半唯一标识符。

对象的引用是该对象上的作用域句柄。

对象的地址(可能)无法获得,当然也没用。

答案 1 :(得分:0)

对象的地址/对象的引用指向对象所在的内存中的位置。

散列码是通过散列算法生成的,用于标识散列集合中的对象。不同的算法会产生不同的代码(糟糕的算法会导致差的哈希码和集合中的更多冲突)。

答案 2 :(得分:0)

对象的哈希码及其在内存中的地址无论如何都不相关。只是对象的不同实现(实际上是在不同的语言中)使用对象的内存地址作为识别该对象的独特方式。

通常,方法对hashCodeequals提供了比较对象以进行标识的方法。在实现自己的散列方案时,您应该记住散列值应该由使对象唯一的东西组成。例如,假设您向数据库系统提供了一个对象映射器,并希望引入一个Customer对象 - 您知道在您的表中,客户在其主键方面是唯一的,因此将此主键作为哈希返回代码是完全可以接受的,并且与对象的内存地址没有任何关系。

如果使用他的名字,姓氏和出生日期识别客户(这不足以唯一地识别一个人,但为了简洁起见让它保持简单)那么你可以将这3个值散列为哈希值代码并在您的O / R映射实现中使用它。