读书人

两个对象值雷同(x.equals(y) == true)

发布时间: 2011-12-03 22:57:58 作者: rapoo

两个对象值相同(x.equals(y) == true),也有相同的hash code,这是为什么???
我的理解 hash code 就是对象的ID值.

[解决办法]
这是约定。
[解决办法]
看一下hashset里面的具体应用就明白了。
[解决办法]
hash code 是通过计算出来的

并不是简单的ID
[解决办法]
Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。

数学表述为:h = H(M) ,其中H( )--单向散列函数,M--任意长度明文,h--固定长度散列值。


MD5 就是典型的hash 的应用
[解决办法]
hashcode 不是ID值..

是根据对象hash出来的..两个一样的对象. 内容相同. 算法不变..hash出来的值肯定就一样.

读书人网 >J2SE开发

热点推荐