`

Object Methodes: equals and hashCode

 
阅读更多

今天看了Object的equals() and hashCode() method, 做下笔记

 

equals() method 需要遵守的条件:

  • Reflexive(反射性): X.equals(X) == true, 自身equals
  • Symmetric(对称性): 如果X.equals(Y), 那么Y.equals(X).
  • Transitive(传递性): 如果X.equals(Y) 且Y.equals(Z) , 那么X.equals(Z).
  • Consistent(稳定性):如果X,Y相等,那么X.equals(X) == true, 无论何时。

hashCode() method

  • 在同一个线程里,hashCode()的返回值必须固定
  • 如果两个实例equals, 那么hashCode()也必须相同.

当改写equals()方法时,也同样需要改写hashCode()方法。

 

Reference:

 

public boolean equals(Object obj)

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

It is reflexive: for any non-null reference value x, x.equals(x) should return true.
It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
For any non-null reference value x, x.equals(null) should return false.

The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true).

Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.

Parameters:
obj - the reference object with which to compare.
Returns:
true if this object is the same as the obj argument; false otherwise.
See Also:
hashCode(), HashMap

 

public int hashCode()

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by HashMap.

The general contract of hashCode is:

Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
It is not required that if two objects are unequal according to the equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)

Returns:
a hash code value for this object.
See Also:
equals(java.lang.Object), System.identityHashCode(java.lang.Object)

 

分享到:
评论

相关推荐

    unitcom.rar_commitment_old6bd_unit commitment_whoseriy

    unit commitment using matlab , It based on Optimiztion methodes: Genetic Algorithms and Dynamic Program

    Library:学校 Java 项目

    这里是类图的小说明Adherent 类(姓名、名字、邮件、地址等): Methodes:- getters, setters,toString,书籍类(标题、作者、主题、数量、份数、可用份数): Methodes:- getters, setters,toString,- Code : theme...

    iteratives.rar_resolution

    Resolution d un systeme linaire Ax=b par des methodes iteratifs: jacobi Gauss-siedel et gradient

    module-5-Methodes-Outils:用于高通量数据分析的生物信息学方法和工具

    模块4和模块5-数据产生,用于高通量数据分析的生物信息学方法和工具 负责模块4和5 Bertrand Cosson-巴黎狄德罗大学 价Loux - INRAE - 奥利维尔· Olivier Kirsh)-巴黎狄德罗大学 讲者 Claude 细胞整合生物学...

    c#调用java WEB服务

     Implementing the web methodes  Deploy and test the web service • Create ASP.net Web Site Using C#  Create ASP.net web site  Add web reference  Write code to invoke web service  ...

    BC 2 32_BC232_

    METHODES DE SONDAGES

    ELES模型Matlab代码-Methodes-Stochastiques-pour-l-Analyse-des-Images:MVA课程

    ELES 模型 Matlab 代码用于图像分析的随机模型 此文件夹包含项目报告、包含使用的测试图像的 im 文件夹、我在其中实现了文章Marcelo Pereyra Ana F. Vidal、Valentin ...部分(使用总体广义变体降噪)中的代码的 ...

    methodes_agiles

    印前研究方法学AGILE奥特(Auteurs) 申内博(ThéoChennebault) 路易·勒杜(Louis Ledoux)安装pip install -r requirements.txt或者pip install .运行测试avec coverage du代码coverage run -m pytest承销商关系...

    Formal verification or certification related

    formal methodes for mobile systems communiciation. Symbolic bisimulation of the applied pi-calculus; formal methodes for mobile systems communiciation. Symbolic bisimulation of the applied pi-...

    VB.rar_des

    à propos des methodes de classification utilisées

    DUBii2021:Bonnes pratiques avec le DUBii

    DUBii2021 Bonnes pratiques avec le ... 迪拜高级制表专家: ://du-bii.github.io/module-5-Methodes-Outils/seance3_goodpractices/TP.html Bonnes pratiques avec le DUBii(英语) 迪拜全国人参预审委员会: :

    Movie-API

    Ajout des path a partir de l'id电影Ajout des filtres dans les methodes 待办事项清单:注释décrireune图片(照片,图片)或媒体(bande annonce)Methode Patch Ajouter unsystèmede tri sur les champs les...

    PROGRAMME-Differentielle.rar_matlab例程_matlab_

    programme de methodes numerique pour la resolution des equations differentielle

Global site tag (gtag.js) - Google Analytics