hashcode与equals

hashcode():object中的方法,实现:根据实例地址来求解的

equals():object中的方法,在object中与==是一致的,比较地址,在其他的类中重写equals()后是根据对象的内容来比较的,例如:String Integer

 

两者的关系:

实际上两者没有直接的任何关系,但两者的实现要满足这样的逻辑:hash值不相等的两个实例一定不相等,hash值相等的两个实例不一定相等

在以散列表为基础的结构中会使用到这两个函数,例如:hashmap  hashset,而其他情况是用不到hashcode()方法的

在hashmap中put()方法中存在这样的逻辑:若hash值不相等则将将值放入hash表中,若hash值相等则再进行equals()的比较

 

重写equals是也要重写hashcode的原因:

上面已经说到以散列表为基本的结构中存在的逻辑,这样处理有什么好处:

1、提高效率,不需要循环整个结构进行比较

posted on 2020-03-08 10:24  努力学习的菜鸡  阅读(107)  评论(0编辑  收藏  举报

导航