【发布时间】:2011-10-01 07:14:50
【问题描述】:
我必须写一个哈希函数,在以下两种情况下:
- 我对传递给该方法的
Object o一无所知 - 它可以是字符串、整数或实际的自定义对象; - 我根本不允许打电话给
hashCode()。
我现在使用的计算哈希码的方法:
- 将对象写入字节流;
- 将字节流转换为字节数组;
-
遍历字节数组并通过执行以下操作计算哈希:
hash = hash * PRIME + byteArray[i]
我的问题是这是一种可以通过的方法,有没有办法改进它?我个人觉得这个功能的范围太广了——没有关于对象是什么的信息,但在这种情况下我几乎没有发言权。
【问题讨论】:
-
这听起来像是功课(为什么你不能打电话给
hashCode?)。如果是,请标记它,以便您得到不同(并且更好)的答案。 -
谢谢,不知道这个标签存在 :) 完成。
-
可以完全摆脱第 2 步 :)
-
@Blindy 我认为他的意思是将字节流转换为字节数组。
-
@Nikita 因为你不知道任何对象的细节,我认为你正在做最好的方式。