1、默认的Object.equals()只是比较对象的地址是否相等。
2、hashCode()方法来返回每个Java对象的哈希码。hashCode和地址不同
3、equals()相等的两个对象,hashcode()一定相等,equals()不相等的两个对象,却并不能证明他们的hashcode()不相等。
4、Java系统首先调用对象的hashCode()方法获得该对象的哈希码表,然后根据哈希码找到相应的存储区域,最后取得该存储区域内的每个元素与该对象进行equals方法比较
5、当我们重写一个对象的equals方法,就必须重写他的hashCode方法,不过不重写他的hashCode方法的话,Object对象中的hashCode方法始终返回的是一个对象的hash地址,而这个地址是永远不相等的。
例如:像商场的的衣服,每个衣架子上好几件衣服,衣服所在的架子相当于一个hashCode,要找某件衣服只要知道他的衣架编号,定位衣架后在使用equals去和衣架上的衣服比较
网友评论