您的位置:首页 > 其它

对于所有方法都通用的对象

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: