黑马程序员技术交流社区
标题:
集合判断相同对象
[打印本页]
作者:
杨强
时间:
2011-10-28 01:18
标题:
集合判断相同对象
用hashCode()方法
不同的对象会出项相同的hashCode吗 如何避免
作者:
绿影
时间:
2011-10-28 01:35
重写hashcode时可以如下方式:
public int hashCode()
{
final int NUM = 38;//随意搞一个数
return name.hashCode() + age*NUM;//乘以一个数降低重复
}
作者:
fso918
时间:
2011-10-28 08:44
hashcode从原则上说是必须是一个唯一值,但现实中对象太多,int型数据个数有限,无法给每一个对象都分配一个唯一的hashcode,所以必然有重码出现。
如果两个对象hashcode相同,就要调用equals方法来判断是否是同一个对象。
关键是要理解什么是散列技术。原理清楚了,就知道hashcode是用来干什么的了。
作者:
吉许
时间:
2011-10-28 09:16
你提到不同的对象会产生相同的hashcode吗?主要目的就是为了比较两个对象是不是相等。
equals()相等的两个对象,hashcode()一定相等;
equals()不相等的两个对象,却并不能证明他们的hashcode()不相等。为了降低重复可以向上面说的乘以一个任意数。
hashcode()不等,一定能推出equals()也不等;hashcode()相等,equals()可能相等,也可能不等。
具体我参见了http://www.iteye.com/topic/257191这篇文章,java中hashcode()和equals()的详解,讲的比较透彻。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2