2016 - 2024

感恩一路有你

hash值相同但内容不同 如果两个对象相同,那么它们的hashCode值一定要相同?

浏览量:1336 时间:2021-03-13 17:17:12 作者:admin

如果两个对象相同,那么它们的hashCode值一定要相同?

如果两个对象具有相同的值(x.equals(y)==true),则它们必须具有相同的哈希代码。Hash,一般翻译为“Hash”,也直接音译为“Hash”,是通过Hash算法将任意长度的输入(也称为预映像)转换成固定长度的输出,输出为Hash值。这种变换是一种压缩映射,即散列值的空间通常比输入的空间小得多,不同的输入可能被散列到同一个输出中,不可能从散列值中唯一地确定输入值。

1)如果对象相等,则哈希码必须相等;

2)如果哈希码相等,则对象可能不相等。

如果两个对象相同,那么它们的hashCode值一定要相同?

Hashcode是所有Java对象的固有方法

如果不重载,它实际上会返回JVM堆上对象的内存地址,不同对象的内存地址肯定会不同。但是,string类的hashcode算法是固定的,可能是相同的。

如果重载,则由于算法的原因,两个不同对象的哈希代码可能相同。

java中两个对象值相同却可能有不同的hashcode对吗?

对象通常放在堆栈中

指向的内存区域放在堆中

对象引用的内存区域可以相同,所以它们的值相同

但是堆栈中的地址不同,所以它们的哈希码不同

哈希的本质是X-> f(X),那么f(x)是一个有限集,x是一个无限集。因此,从理论上讲,任何散列都可能发生冲突。右

hash值相同但内容不同 值传递和引用传递的区别 hashcode相同对象不同

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。