这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
分享:技术:hash:hashcode [2016/02/02 12:53] gxx |
分享:技术:hash:hashcode [2016/02/02 13:02] (当前版本) gxx |
||
---|---|---|---|
行 7: | 行 7: | ||
一般在散列集合中用到,如:HashSet、HashMap以及HashTable | 一般在散列集合中用到,如:HashSet、HashMap以及HashTable | ||
===== 作用 ===== | ===== 作用 ===== | ||
- | 提高查询效率:equals比较俩对象是否相等,但是如果数据量很大,效率会很差,所以先比较hashcode,如果hashcode不相等,equals肯定不相等;如果hashcode相等,再比较equals,这样大大减少比较equals的次数,提高查询效率! | + | **提高查询效率**:equals比较俩对象是否相等,但是如果数据量很大,效率会很差,所以先比较hashcode,如果hashcode不相等,equals肯定不相等;如果hashcode相等,再比较equals,这样大大减少比较equals的次数,提高查询效率!所以hashcode最大的作用就是用于【**判断不相等**】。 |
- | ===== hashcode与equals关系 ===== | + | ===== hashcode与equals ===== |
+ | 默认object可以理解为hashcode是返回对象的地址,equals是比较俩对象的地址是否相等**return (this == obj);** | ||
+ | |||
+ | 但是基础类型String,Double,Integer等,重写了hashcode和equals方法,进行的是内容的比较,如果内容一样,不管是不是同一个new出来的对象,返回的hashcode值是一样的和equals比较也是相等的! | ||
+ | ===== hashcode与equals的关系 ===== | ||
对于两个对象: | 对于两个对象: | ||
- 如果调用equals方法得到的结果为true,则两个对象的hashcode值必定相等 | - 如果调用equals方法得到的结果为true,则两个对象的hashcode值必定相等 |