一、hashCode 方法是做什么的?
概述: hashCode 方法时Object类中的一个方法
作用:
- hashcode()方法主要配合基于散列的集合一起使用,比如HashSet、HashMap、HashTable。
- 当集合需要添加新的对象时,先调用这个对象的hashcode()方法,得到对应的hashcode值,实际上hashmap中会有一个table保存已经存进去的对象的hashcode值,如果table中没有改hashcode值,则直接存入;如果有,就调用equals方法与新元素进行比较,相同不存,不同就存入。
equals和hashcode关系
- 如果equals为true,hashcode一定相等;
- 如果equals为false,hashcode不一定不相等;
- 如果hashcode值相等,equals不一定相等;
- 如果hashcode值不等,equals一定不等;
二 、什么时候应该重写/覆盖hashcode方法?
只有在使用HashMap、HashSet等数据结构时,并且存储的对象是我们自定义的对象时,才需要重写。
三、hashcode方法默认根据什么创建的
自己创建对象hashCode是根据对象的地址计算得出的