您的位置:首页 > 编程语言 > Java开发

关于hashcode()方法和equals()方法的一些理解

2013-04-09 14:16 281 查看
Object 类提供了两个方法 hashcode() 与equals(),用于比较两个对象是否相同。

首先,hashcode码必须在实现了hash table 的容器中才有作用(比如 hashset,hashmap),这里拿hashset举例。

当向集合hashSet中增加对象时,首先集合计算要增加对象的hashCode码,根据该值来得到一个位置用来存放当前对象,挡在该位置没有一个对象存在的话,那么集合hashSet认为该对象在集合中不存在,直接增加进去。如果在该位置有一个对象存在的话,接着将准备增加到集合中的对象与该位置上的对象进行equals方法比较,如果该equals方法返回false,那么集合认为集合中不存在该对象,在进行一次散列,将该对象放到散列后计算出的新地址里,如果equals方法返回true,那么集合认为集合中已经存在该对象了,不会再将该对象增加到集合中了。

有一个概念必须记住,在没有重写equals方法时,equals相等的那两个对象一定拥有相同的HASHCODE码,但是反过来并不一定成立。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java equals hashcode HashMap