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方法返回的数字不能变化。
* 当两个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
- hashCode()与equals()方法
- hashCode与equals方法
- equals方法与hashcode方法
- java equals与hashCode方法
- Java equals()与hashCode()方法
- equals与hashCode方法详解
- HashSet集合---HashCode方法与equals方法
- 解读equals方法与hashCode方法渊源
- java中hashCode方法与equals方法
- equals方法,hashCode方法
- hashCode方法equals方法
- override的equals与hashCode方法
- 改写equals与hashCode的简单方法
- hibernate实体实现hashcode与equals方法
- java中hashcode与equals方法
- equals()与hashCode()方法协作约定
- Java中equals()与hashCode()方法详解
- hashcode与equals方法的关系
- 运用栈求解迷宫问题C/C++
- [leetcode] 400. Nth Digit
- 文件IO---lseek、fcntl函数
- 趣写算法系列之--匈牙利算法
- 判断字符串中的括号是否成对出现
- equals方法与hashcode方法
- uprobe试用小结
- 系统命令注入的介绍与代码防御
- shell脚本调用java jar包 的问题总结
- 数据库索引
- 分享一道有意思的HTML题
- Clojure 学习入门(3)- 数字类型
- 拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录
- Android Studio 问题记录-全部java文件全部报错,却可以运行