我正在考虑用于任意 Java 对象的哈希函数作为练习方法。天真的方法是为每个属性调用 hashCode() 函数,添加这些散列,然后取最大散列值模的总和,或类似的方法。但是,这意味着,只要更改其中一个属性,散列值就会更改,因此如果要将对象存储在散列表中,则不能使用此方法。一个对象的散列码应该代表它的身份。但是我怎样才能将这个抽象的身份表示为一个整数值呢?也许通过使用对象地址(假设 Java 在运行时不会在内存中移动对象),但是 Java 有没有办法获取对象地址?
您将如何实现这样的哈希函数?
提前致谢。
最佳答案
我认为Effective Java's chapter关于所有对象通用的方法是一个很好的资源。
关于Java:对象的哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7422998/