尽管经常使用equals,也可能理解不一定神,最近又要使用Collections.sort看到了这些,总结的不错。

首先equals方法必须满足自反性、对称性、传递性和一致性。

自反性(x.equals(x)必须返回true)、

对称性(x.equals(y)返回true时,y.equals(x)也必须返回true)、

传递性(x.equals(y)和y.equals(z)都返回true时,x.equals(z)也必须返回true)

和一致性(当x和y引用的对象信息没有被修改时,多次调用x.equals(y)应该得到同样的返回值),

而且对于任何非null值的引用x,x.equals(null)必须返回false。

实现高质量的equals方法的诀窍包括:

1. 使用==操作符检查"参数是否为这个对象的引用";

2. 使用instanceof操作符检查"参数是否为正确的类型";

3. 对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;

4. 编写完equals方法后,问自己它是否满足对称性、传递性、一致性;

5. 重写equals时总是要重写hashCode;

6. 不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解(可以不写,但写了利大于弊)。

我只是大自然的搬运工。打个小广告,销售儿童早教产品,为了娃买套吧,哈哈。http://yandz.com/mr/ar.html

equals方法的小结的更多相关文章

  1. String使用equals方法和==分别比较的是什么?

    equals方法和==的区别   首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用.这里指的作为一个基本类型来使用只是指使用方法上的,比如String s = &quo ...

  2. JAVA学习(二) String使用equals方法和==分别比较的是什么?(转)

    String使用的equals方法和==的区别 equals方法和==的区别   首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用.这里指的作为一个基本类型来使用只是指 ...

  3. equals方法和==的区别

    equals方法和==的区别   首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用.这里指的作为一个基本类型来使用只是指使用方法上的,比如String s = &quo ...

  4. Java集合学习(10):hashcode() 和 equals()方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个 ...

  5. Java的equals方法的使用技巧

    Java的equals方法的使用技巧 1.业务场景: 在某个社交软件中,要求每个用户的用户名(name)必须独一无二,那么在每次增加新用户的时候,都要对该用户的注册名进行判断,如果当前用户名已经被占用 ...

  6. C# 有关List<T>的Contains与Equals方法

    [以下内容仅为本人在学习中的所感所想,本人水平有限目前尚处学习阶段,如有错误及不妥之处还请各位大佬指正,请谅解,谢谢!]   !!!观前提醒!!! [本文内容可能较为复杂,虽然我已经以较为清晰的方式展 ...

  7. List<T>Find方法,FindAll方法,Contains方法,Equals方法

    假如传入的T是一个类, List<MessageInfos> MessageInfos = new List<MessageInfos>(); MessageInfos= Me ...

  8. [java] 更好的书写equals方法-汇率换算器的实现(4)

    [java] 更好的书写equals方法-汇率换算器的实现(4) // */ // ]]>   [java] 更好的书写equals方法-汇率换算器的实现(4) Table of Content ...

  9. java中的equals()方法重写

    如何java中默认的equals方法跟实际不符的话,需要重写equals方法.例如: public class TestEquals { public static void main(String[ ...

随机推荐

  1. 转:EntityFramework查询--联合查询(Join,GroupJoin)

    首先我们先看一下Join public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(this ...

  2. HTML5革命即将爆发

    近日,关于"HTML5生态重建冷思考"成为了很多人热烈讨论的话题.在网页制作市场上面,HTML5技术成为了颇为关注的焦点,在行业和社会各界引起了广泛的关注.HTML5网页制作也创造 ...

  3. ubuntu dpkg 依赖问题处理

    ubuntu dpkg 依赖问题处理 使用 apt-get 安装软件期间,如果出现意外中断的情况,下次安装时会出现 dpkg 的一系列依赖问题,提示如下 :: dpkg: error processi ...

  4. mongoose index

    1. 当应用程序启动时,Mongoose会自动为模式中的每个定义的索引调用ensureIndex. 虽然很好用于开发,但建议在生产中禁用此行为,因为索引创建可能会导致显着的性能影响. 通过将模式的au ...

  5. Python之路-python(set集合、文本操作、字符编码 )

    一.集合操作(set)                                                                                          ...

  6. require,include,require_once,include_once的区别

    最近面试时被问到,一时间还真没想到太多,仅仅回答了大概的几个,于是回来再确认一下. 以下内容为网络摘抄: ①作用及用法  可以减少代码的重复 include(_once)("文件的路径&qu ...

  7. 将数据文件从普通文件系统移动到ASM

    场景一:数据库可以关闭1.关闭并mount数据库 $ sqlplus '/as sysdba' SQL> shutdown immediate SQL> startup mount; 2. ...

  8. asp.net mvc4 设置build项目时,编译view页面

    新建好项目后,把system.web.mvc.dll移除,重新选择本地C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies ...

  9. cocos2d-x使用AssetsManager类实现资源的在线更新

    从2.1.2版本开始,2dx在libExtensions下添加了一个AssetsManager类用于资源的在线更新和简单的版本管理,同时添加了AssetsManagerTest项目示范了AssetsM ...

  10. oracle 面试题

    1.对数据库SQL2005.ORACLE熟悉吗?   SQL2005是微软公司的数据库产品.是一个RDBMS数据库,一般应用在一些中型数据库的应用,不能跨平台.   ORACLE是ORACLE公司的数 ...