`
geke260
  • 浏览: 14000 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

equals 和 hashcode 约束及应用

 
阅读更多
java.lang.Object的约定如下:
1,在程序的同一执行期间,如果equals方法的信息不给修改,那么对同一对象多次调用hashcode得出的值也是必须一样。但是不要求在不同的执行期间保持一致
2,如果两个对象的equals()方法等同,那么两对象任何一个调用hashCode()方法,必须产生同样的结果。
3,如果两对象的equals()方法不相等,那么对两对象的任意对象调用hashCode()方法,不要求产生两个不同的整数结果

hashcode   就仿佛是一个Object的ID,如果说它有什么特别,那就是它是一个int类型的值。在所有对象的运算中,int是最快(当然最快的是char,但是它能表达的信息太有限了)。一个简单的例子是Hashtable.contain(Object)方法,它首先是根据Object的散列值去判断,只有当出现多个相同的散列值的时候才会调用equals(),因为判断int比判断Object.equals()要快很多,这是一个提高效率的策略问题
分享到:
评论

相关推荐

    JAVA读取Excel,建库建表,并生成java实体.zip

    同时,可以自动生成getter和setter方法,以及toString、equals和hashCode方法。这个过程可能还会涉及一些代码生成工具,比如MyBatis的Mapper XML和Entity生成,或者使用Lombok库简化代码。 在"SyncDBJava-master"这...

    Java初级面试题.docx

    Java是一种广泛使用的编程语言,尤其在企业级应用和服务器端开发中占据主导地位。对于初学者来说,了解Java的核心概念和特性是至关重要的。这里我们将深入探讨Java中创建线程的方式、线程池的状态、JDK、JRE、JVM的...

    黑马外卖kotlin源码

    - XML布局:创建和管理应用界面,使用约束布局(ConstraintLayout)实现响应式设计。 5. **权限管理** - Android运行时权限:根据Android 6.0及更高版本的需求,动态请求权限。 6. **单元测试和集成测试** - ...

    java编程小技巧共享

    11. **equals与hashCode**:当重写equals方法时,也应同时重写hashCode方法,以保持对象在哈希表中的一致性。 12. **资源自动关闭**:使用try-with-resources语句,可以确保资源在使用后自动关闭,例如数据库连接、...

    hibernate 总结

    此外,还讨论了如何实现继承策略,以及equals()和hashCode()方法的重要性。动态模型的概念也被提及,为开发者提供了一种更灵活的数据访问方式。 ### 对象/关系数据库映射基础 这部分内容深入探讨了对象关系映射的...

    阿里巴巴java开发手册(嵩山版)word版

    - **集合处理**:提供了处理集合时的最佳实践,例如避免使用`null`元素,合理选择集合类型,正确使用`equals()`和`hashCode()`等。 2. **异常日志**:强调了正确记录和处理异常的重要性,提倡使用自定义异常,提供...

    jdk-14_doc-all.zip

    Records自动实现了equals(), hashCode() 和toString() 方法,简化了无状态对象的创建和使用。 2. **开关表达式(Switch Expressions)增强**:在JDK 14中,Switch语句得到了扩展,可以作为表达式使用,支持yield...

    hibernate笔记

    12. **实现equals()和hashCode()**:为了保证集合类(如Set)的正确性和对象的唯一性,需要在实体类中重写`equals()`和`hashCode()`方法,确保基于业务逻辑的比较。 13. **多对一实体映射**:在多对一关系中,一个...

    阿里巴巴JAVA开发规范doc版

    集合处理部分提供了处理集合时的建议,如避免null元素、正确使用equals()和hashCode()等。并发处理部分讲述了多线程编程中的最佳实践,包括锁的使用、线程安全的变量等。控制语句的规约指导如何有效使用if、for、...

    kotlin_v1.0.rar

    3. 数据类:Kotlin为数据类提供了一种便捷的声明方式,自动生成equals()、hashCode()和toString()方法,简化了日常开发中的数据对象处理。 二、类型系统 1. 静态类型:Kotlin采用静态类型系统,编译时就能确定所有...

    java和.net面试题汇总

    1. MVC模式是Model-View-Controller的缩写,用于分离应用程序的业务逻辑、视图和控制层。 2. SSH代表Spring、Struts和Hibernate,是Java开发中常用的开源框架组合。 3. 开源框架是指可供公众查看、使用和修改的软件...

    hibernate教程

    - **equals() 和 hashCode()**:实现这些方法以确保对象的正确比较和哈希表操作。 - **动态模型**:使用动态模式处理不固定列数的表。 - **元组片断映射**:通过自定义实现提高性能和灵活性。 **对象/关系数据库...

    Kotlin官方参考文档 中文版

    5. **数据类**:数据类是专门用于存储数据的类,它们自动生成equals()、hashCode()和toString()方法。 6. **扩展函数和属性**:Kotlin允许为已有的类添加新的函数和属性,而无需继承或使用装饰者模式。 7. **互...

    2021-2022计算机二级等级考试试题及答案No.18823.docx

    - **HashCode 一致性**:当两个对象的`equals`方法返回`true`时,它们的`hashCode`值也必须相同,这是为了在哈希表等数据结构中正确地存储和检索对象。但在其他情况下,它们的`hashCode`可以不同。 ### 20. 索引...

    Kotlin 官方参考文档 中文版_kotlin-reference-chinese.zip

    只需一个data关键字,即可自动生成equals()、hashCode()、toString()等方法,简化了日常开发工作。 四、函数与表达式 Kotlin中的函数可以作为一等公民,可以在任何地方使用,包括作为参数或返回值。函数支持命名...

    java C++ 文档

    6. 错误的 equals() 和 hashCode():不遵守equals()和hashCode()约定,可能导致集合操作出现意料之外的结果。 7. 忽视finally块:在涉及资源管理的代码中,finally块用于确保资源关闭,不应忽视。 8. 不良的异常抛出...

    详解Java中HashSet和TreeSet的区别

    简单地说,HashSet 集合判断两个元素相等的标准是两个对象通过 equals 方法比较相等,并且两个对象的 hashCode() 方法返回值相等。 需要注意的是,如果要把一个对象放入 HashSet 中,重写该对象对应类的 equals ...

Global site tag (gtag.js) - Google Analytics