关于hashcode()方法和equals()方法的一些理解
2013-04-09 14:16
281 查看
Object 类提供了两个方法 hashcode() 与equals(),用于比较两个对象是否相同。
首先,hashcode码必须在实现了hash table 的容器中才有作用(比如 hashset,hashmap),这里拿hashset举例。
首先,hashcode码必须在实现了hash table 的容器中才有作用(比如 hashset,hashmap),这里拿hashset举例。
当向集合hashSet中增加对象时,首先集合计算要增加对象的hashCode码,根据该值来得到一个位置用来存放当前对象,挡在该位置没有一个对象存在的话,那么集合hashSet认为该对象在集合中不存在,直接增加进去。如果在该位置有一个对象存在的话,接着将准备增加到集合中的对象与该位置上的对象进行equals方法比较,如果该equals方法返回false,那么集合认为集合中不存在该对象,在进行一次散列,将该对象放到散列后计算出的新地址里,如果equals方法返回true,那么集合认为集合中已经存在该对象了,不会再将该对象增加到集合中了。
有一个概念必须记住,在没有重写equals方法时,equals相等的那两个对象一定拥有相同的HASHCODE码,但是反过来并不一定成立。
相关文章推荐
- 关于hashcode和equals方法重写的一些理解!
- 关于重写equals方法,hashcode方法,toString方法 ,compareto()方法
- hashCode()、equals()以及compareTo()方法的理解
- 对于hashCode和equals的一些理解
- 关于equals与hashcode方法的重写原则
- 关于Object类的equals方法和hashCode方法
- HashCode如何理解?关于hashcode方法和HashSet类
- hashCode()、equals()以及compareTo()方法的理解 (整理)
- 关于HashCode和equals的理解
- 关于重写entity的equals()和hashCode()方法的必要性
- 关于 equals()与hashcode()方法
- 关于HashCode和equals方法在HashSet中的使用
- equals,hashCode 方法理解
- hashCode()、equals()以及compareTo()方法的理解
- 关于Java覆盖equals方法时必须覆盖hashCode方法
- 关于重写equals,hashcode以及compareTo方法!
- hashCode()、equals()以及compareTo()方法的理解 (整理)
- 理解Java中的hashCode 和 equals 方法
- 对java中equals和hashCode函数的一些理解
- java equals()和hashcode()方法的理解