对于所有方法都通用的对象
2017-05-10 15:33
183 查看
equals
重写equals方法要遵循一下几个法则:
自反性 对称性 传递性 一致性(无论调用几次equals都不会改变结果) 非空性(所有对象不能为null)
实现高质量equals的几点
1.使用==操作先判断是否为同一对象的引用
2.使用instanceof判断类型
3.参数转化成正确类型(参数应该是Object类)
4.检查关键域是否匹配
5.检查对称性,传递性和一致性
6.覆盖equals总要覆盖hashcode,参数类型一定要为Object,不要让equals方法过于智能
hashcode
在计算equals方法之前,首先会调用hashcode方法将对象分桶,以下是hashcode方法的约定
1.hashcode对同一对象的计算值永远相等
2.两个对象equals返回true,那么他们的hashcode必然相等
3.hashcode相等,不一定equals。单位了提高散列的效率,应尽量让他们不相等
不要试图通过排除掉关键域的方式来提高散列效率,也不要加入非关键域
注:像HashMap HashSet这样的集合,会通过hashcode来判断对象是否相等,所以如果hashcode编写不当,集合会出错
Comparator接口与Comparable接口的区别
http://www.cnblogs.com/szlbm/p/5504634.html
Comparable是内部比较器 提供的方法是 int compareTo(T t)
Comparator是外部比较器 提供的方法是 int compare(T t1, T t2)
重写equals方法要遵循一下几个法则:
自反性 对称性 传递性 一致性(无论调用几次equals都不会改变结果) 非空性(所有对象不能为null)
实现高质量equals的几点
1.使用==操作先判断是否为同一对象的引用
2.使用instanceof判断类型
3.参数转化成正确类型(参数应该是Object类)
4.检查关键域是否匹配
5.检查对称性,传递性和一致性
6.覆盖equals总要覆盖hashcode,参数类型一定要为Object,不要让equals方法过于智能
hashcode
在计算equals方法之前,首先会调用hashcode方法将对象分桶,以下是hashcode方法的约定
1.hashcode对同一对象的计算值永远相等
2.两个对象equals返回true,那么他们的hashcode必然相等
3.hashcode相等,不一定equals。单位了提高散列的效率,应尽量让他们不相等
不要试图通过排除掉关键域的方式来提高散列效率,也不要加入非关键域
注:像HashMap HashSet这样的集合,会通过hashcode来判断对象是否相等,所以如果hashcode编写不当,集合会出错
Comparator接口与Comparable接口的区别
http://www.cnblogs.com/szlbm/p/5504634.html
Comparable是内部比较器 提供的方法是 int compareTo(T t)
Comparator是外部比较器 提供的方法是 int compare(T t1, T t2)
相关文章推荐
- effective java-读书笔记-第三章 对于所有对象都通用的方法
- Effective Java学习笔记-对于所有对象都通用的方法
- 10. 【对于所有对象都通用的方法】尽量覆盖toString方法
- Effective Java 03 对于所有对象都通用的方法
- Effective Java Note(对于所有对象都通用的方法)
- 第3章 对于所有对象都通用的方法
- Effective Java:对于所有对象都通用的方法
- Effective Java2读书笔记-对于所有对象都通用的方法(一)
- 对于所有对象都通用的方法
- 第12条 对于所有对象都通用的方法——考虑实现Comparable接口
- Effective Java读书笔记(第3章-对于所有对象都通用的方法)
- effective java(对于所有对象都通用的方法)
- Effective Java学习笔记(二)对于所有对象都通用的方法
- Effective Java(二) 对于所有对象都通用的方法
- Effective Java2读书笔记-对于所有对象都通用的方法(二)
- 《Effective Java》—— 对于所有对象都通用的方法
- Effective Java:对于所有的对象都通用的方法
- 《Effective java》学习笔记 2 之 对于所有对象都通用的方法
- 第8条 对于所有对象都通用的方法——覆盖equals时请遵守通用约定
- Java中对于所有对象都通用的方法之——equals