hashcode与equals
hashcode():object中的方法,实现:根据实例地址来求解的
equals():object中的方法,在object中与==是一致的,比较地址,在其他的类中重写equals()后是根据对象的内容来比较的,例如:String Integer
两者的关系:
实际上两者没有直接的任何关系,但两者的实现要满足这样的逻辑:hash值不相等的两个实例一定不相等,hash值相等的两个实例不一定相等
在以散列表为基础的结构中会使用到这两个函数,例如:hashmap hashset,而其他情况是用不到hashcode()方法的
在hashmap中put()方法中存在这样的逻辑:若hash值不相等则将将值放入hash表中,若hash值相等则再进行equals()的比较
重写equals是也要重写hashcode的原因:
上面已经说到以散列表为基本的结构中存在的逻辑,这样处理有什么好处:
1、提高效率,不需要循环整个结构进行比较
心有多大,天有多高,一起奋斗!!