equals方法与hashcode方法

来源:互联网 发布:哪个cms好 编辑:程序博客网 时间:2024/05/01 17:08
 * 作为HashMap的key的元素equals方法与hashcode方法返回的结果直接影响着散列表的查询性能
 * 当两个key的hashcode值一样,意味着他们在散列桶(HashMap中维护的数组)的相同位置,但若这两个key的
 * equals比较结果不为true,则在HashMap中就会形成链表,这样的情况多了HashMap的查询性能会降低很多。
 * 所以应当妥善处理作为Key元素的类的equals方法与hashcode方法的重写。
 * API手册中Object类对equals与hashcode有明确的交代
 * 即:
 * 当我们重写equals方法就应当连同重写hashcode,重写
 * hashcode方法的规则应为:
 * 一致性:应当与equals方法保持一致,即:
 *       当两个对象equals比较为true时,hashcode方法返回的数字必须相同,反过来则不是必须的,
 *       但应当尽量保证两个对象若hashcode方法返回的数字相同时equals比较也为true,
 *       否则在HashMap中会出现链表影响查询性能。
 * 稳定性:在参与equals比较的属性值没有发生过变化的前提
 *       下多次调用hashcode方法返回的数字不能变化。      

1 0
原创粉丝点击