`

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...

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

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

    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承销商关系...

    ISO 19642-2

    它的全称是"Road vehicles - Automotive cables - Part 2: Test methods",在法语版本中被称为“Vehicules routiers - Cables automobiles - Partie 2: Methodes d'essai”。 该标准的目的是确保汽车电缆的质量和...

    VB.rar_des

    描述提到“à propos des methodes de classification utilisées”,这可能是指讨论了在VB中应用的各种分类或组织数据的方法。标签“des”在法语中是“关于”的意思,进一步证实了这个文件可能包含的是关于某个主题...

    BC 2 32_BC232_

    【描述】"METHODES DE SONDAGES" 提供了更具体的信息,表明这个文档主要关注的是“探测方法”。在建筑工程领域,探测方法通常指的是地质勘探技术,包括但不限于土壤、岩石的取样、测试和分析,以便于了解地基条件,...

    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...

    FrenchAndroid:适用于 Android 的 MTN 法语共轭器

    这款应用的核心功能是提供MTN(Methodes de Tense et de Niveau,即时态和级别的方法)来帮助学习者共轭法语动词。MTN是一种教学法,它系统地介绍了法语动词的不同时态和用法,使得学习过程更加清晰和有条理。 在...

    PROGRAMME-Differentielle.rar_matlab例程_matlab_

    在描述中提到的"programme de methodes numerique pour la resolution des equations differentielle",意味着这个压缩包包含的MATLAB代码是用于数值解决微分方程的方法。数值方法是处理微分方程的一种常见手段,...

Global site tag (gtag.js) - Google Analytics