hashcode相等意味着什么 见题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 两个对象"=="他们的hashcode相等吗?两个对象equels 他们的hashcode相等吗? 两个对象"=="他们的hashcode相等吗? 两个对象equels 他们的hashcode相等吗? == hashcode必等equals()相等 要看了 但定义 也是相等的 自己看下API吧 里面有讲 两个对象 == 的话,那说明引用的是同一个对象,equals 相等,hashCode 也相等两个对象 equals 为 true 的话,那说明值是相等的,hashCode 也相等,但是 == 并不一定会相等如果类没有重写 equals 和 hashCode 方法的话,就使用根类 Object 的方法,Object 的 equals 是直接判断 == 的。为了能让 equals 与 == 做不同样的事情,强烈建议重写 equals 方法和 hashCode 方法。更多的说明,可以参见 java.lang.Object 中 hashCode 和 equals 的 API DOC。 [Quote=引用 4 楼 yuchujin 的回复:]== hashcode必等 equals()相等 要看了 但定义 也是相等的[/Quote】四楼正解 相不相等要看你自己重写的equals()和hashcode()方法,由你决定。不过一般重写的话都是equals可以推出hashcode相等,反过来不行,hashcode()主要用在hashMap等哈希存储结构中,hashcode()相等说明在同一个桶,然后再判断equals()是否相等,通过这样可以快速判断是否有相同元素在hashMap中,楼主还不明白的话就去看看哈希查找原理 hascode相等表明引用的是同一对象,如果一个对象的hashCode变动了,会造成找不到这个对象,也就出现了内存泄漏的危险。参考:http://blog.csdn.net/java2000_net/archive/2008/11/14/3298928.aspx hascode相等表示equals时会返回true,==表示他们的值相等 hashcode是计算散列码的,如果你学过数据结构的话,应该知道散列码的概念,比如说hash函数是i%13,那么当你i为3的时候,hashcode为3,当你i为16时,你的hashcode还是为3,这2个i显然不equals,所以说你不能通过hashcode相等判断i是否是同一个值,但反过来,如果两个i的值equals,比如都是3,那显然计算i%13得到的hashcode是相等的 不理解这个论断,难道hashcode还会采用随机数吗? hashCode()主要是用来在hasSet和hashMap当中使用的,如果你不用这些,hashCode也不用重写,哈希表原理很简单,就好比是查字典,你的hashCode()是索引,你的值是你所要查找的东西,之所以要使用hashCode是为了提高查找的效率 == HashCode 必然相等equals() HashCode也是相等的 hashcode对应的是对象所存储的位置啊 我也是新手,一起学习吧(*^__^*) 两个对象equals,代表这两个对象一定相等,且hashcode()也一定相等但是hashcode相等代表这两个对象在很大程度上可能相等,也有两个对象不相等的情况,原因在于,现代的hashcode()的计算大都采用一种叫杂凑算法的方法的计算出来的,这虽然在很大程度上避免了相等的结果出现的情况,但也不是绝对能避免的,就象假设你叫一个很古怪的名字,不代表机没有其他人的名字和你的一样,只是碰到那个重名的人的概率很小,假设你叫王强,那你可能碰到同名的人的概率机大了(不知道这个比喻恰当不恰当) JFrame窗体拖动事件怎么监听 如何将一个内存地址赋值给一个字节数组对象 请教正则问题:如何利用正则从一个字符串中取出符合条件的子串? 全局变量问题 再问改变鼠标形状问题!! 关于单元测试的问题,请大家帮帮忙 在solaris系统中JDK环境变量的配置 ObjectInputStream.readInt()函数是读取32位的Int型吗?如何转换到C#代码? 听说Dreamweaver是用java做的?? 请问Java高手。pgy GC为什么不能保证回收 下拉框保存数据绑定问题
两个对象equels 他们的hashcode相等吗?
两个对象equels 他们的hashcode相等吗?
两个对象 equals 为 true 的话,那说明值是相等的,hashCode 也相等,但是 == 并不一定会相等如果类没有重写 equals 和 hashCode 方法的话,就使用根类 Object 的方法,Object 的 equals 是直接判断 == 的。
为了能让 equals 与 == 做不同样的事情,强烈建议重写 equals 方法和 hashCode 方法。更多的说明,可以参见 java.lang.Object 中 hashCode 和 equals 的 API DOC。
== hashcode必等 equals()相等 要看了 但定义 也是相等的
[/Quote】四楼正解
参考:http://blog.csdn.net/java2000_net/archive/2008/11/14/3298928.aspx
hashCode也不用重写,哈希表原理很简单,就好比是查字典,你的hashCode()
是索引,你的值是你所要查找的东西,之所以要使用hashCode是为了提高查找的效率
equals() HashCode也是相等的
两个对象equals,代表这两个对象一定相等,且hashcode()也一定相等
但是hashcode相等代表这两个对象在很大程度上可能相等,也有两个对象不相等的情况,原因在于,现代的hashcode()的计算大都采用一种叫杂凑算法的方法的计算出来的,这虽然在很大程度上避免了相等的结果出现的情况,但也不是绝对能避免的,就象假设你叫一个很古怪的名字,不代表机没有其他人的名字和你的一样,只是碰到那个重名的人的概率很小,假设你叫王强,那你可能碰到同名的人的概率机大了(不知道这个比喻恰当不恰当)