`
hansha2
  • 浏览: 35136 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基础补充

 
阅读更多

hashcode 修改的使用时机:

      在每改写equals方法,就要改写hashcode方法。如果不改写的话,会导致该类无法与所有基于散列值(hash)的集合类结合在一起正常工作,这样的集合包括hashMap,hashSet和hashtable.

      如果我们定义的类不会和java集合类产生关系,那么我们完全没有必要在重写equals()方法的时候来重写hashcode()方法。但出于规范,还是最好用ide直接生成。

编写hashcode的方法:

     

  1. 把某个非零常数值(如17)保存在一个叫result的int类型的变量中;
  2. 对于对象中每个关键字域f(指equals方法中考虑的每一个域),完成以下步骤:
    1. 为该域计算int类型的散列码c:
      1. 如果该域是bloolean类型,则计算(f?0:1)
      2. 如果该域是byte,char,short或int类型,则计算(int)f
      3. 如果该域是long类型,则计算(int)(f^(>>>32))
      4. 如果该域是float类型,则计算Float.floatToIntBits(f)
      5. 如果该域是double类型,则计算Double.doubleToLongBits(f)得一long类型值,然后按前述计算此long类型的散列值
      6. 如果该域是一个对象引用,则利用此对象的hashCode,如果域的值为null,则返回0
      7. 如果该域是一个数组,则对每一个数组元素当作单独的域来处理,然后安下一步的方案来进行合成


    2. 利用下面的公式将散列码c 组合到result中。

              result=37*result+c;

 

hashMap 与  hashtable:判断key是否相同的条件都是hashcode()相同&&满足equals() 。

 

 

 

 

分享到:
评论

相关推荐

    Servlet基础补充案例 习题.doc

    Servlet 基础补充案例习题 在本节中,我们将探讨 Servlet 基础补充案例习题,旨在掌握实际开发中 Servlet 程序的基本实现和使用。我们将通过两个案例,分别演示如何编写基于 HTTP 协议的 Servlet 程序,并掌握 ...

    Java基础补充案例.zip

    "Java基础补充案例.zip"这个压缩包显然是为初学者准备的,旨在通过额外的练习来增强Java基础知识的理解和应用能力。这个资源来自"黑马程序员",一个知名的在线教育平台,他们通常提供高质量的教学材料。 在压缩包中...

    AutoCAD基础补充功能学习教案.pptx

    以下是对【标题】"AutoCAD基础补充功能学习教案.pptx"和【描述】所提及知识点的详细解释: 1. **多文档间的编辑支持**: - **对象拖曳**:允许用户在不同的AutoCAD文档之间移动和复制对象。选中对象后,不激活夹点...

    计算机基础补充知识点.pdf

    计算机基础补充知识点主要涵盖计算机的发展历程和计算机的分类。以下是这些知识点的详细说明: 1. 计算机的发展历程: 计算机的发展历经五个阶段,每一代的进步都基于核心逻辑元件的改进: - 第一代(1946-1958年...

    JAVA基础补充(18)-NET.doc

    在这个JAVA基础补充文档中,我们探讨了两个核心主题:通过InetAddress类获取网络信息以及如何从URL读取网页内容。 首先,让我们详细了解一下InetAddress类。InetAddress是Java中的一个核心类,它用于表示互联网协议...

    数据基础补充练习.py

    数据基础补充练习.py

    单片机相关基础补充

    单片机的相关基础补充,通过这份文档,将一些平时会忽略的知识点进行补充

    nodeJS基础补充

    **Node.js基础补充** Node.js是一款基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程,打破了JavaScript只能在浏览器端使用的限制。Node.js采用事件驱动、非阻塞I/O模型,使...

    最新版本的基础补充插件

    补充插件之一,虽然不知道有什么作用, 不过姑且还是上传了

    linux操作基础补充

    使用linux操作系统的基础操作,ls和cd两个操作命令的使用方法

    自动控制理论数学基础补充PPT课件.pptx

    《自动控制理论数学基础》 自动控制理论是研究控制系统行为和设计控制策略的学科,其数学基础至关重要。本课程旨在深入理解控制系统的数学模型,包括时域模型和复域模型,以便于分析和设计各类控制系统。 一、控制...

    数字逻辑基础(复旦大学)

    《数字逻辑基础》是复旦大学提供的一门深入讲解数字电路和逻辑设计的课程,旨在帮助学生理解并掌握数字系统的基础理论和应用。这门课程的内容丰富,涵盖了数字电路的基本概念、逻辑门、组合逻辑电路、时序逻辑电路...

    深度学习-3D点云实战系列.rar

    深度学习-3D点云实战系列视频教程分享,2021年录制;所有算法均配套实战项目,内容主要包括poinenet系列点云分类与分割,点云补全,点云配准等项目,全部基于实际...章节10 基础补充-对抗生成网络架构原理与实战解析

    信息学奥赛基础知识补充部分

    信息学奥赛基础知识补充部分信息学奥赛基础知识补充部分

    深度学习-语音识别实战(Python).rar

    深度学习-语音识别实战(Python...章节9 基础补充-PyTorch框架基本处理操作 章节10 PyTorch使用补充-神经网络实战分类与回归任务 章节11 算法补充-卷积神经网络原理与参数解读 章节12 策略补充-迁移学习与Resnet网络架构

    《HTML5+CSS3网站设计基础教程》源代码+补充案例+动手实践

    源代码、补充案例和动手实践环节是学习过程中的重要组成部分,它们帮助理论知识与实际操作相结合,使学习更加深入且富有成效。 HTML5(HyperText Markup Language 5)是当前Web开发的标准标记语言,它在HTML4的基础...

    空白票据补充权基础问题的民法学分析

    关于空白票据补充权的理论基础,主要有委任说、代理说、契约说、授权说四种。在以民法视角比较分析相关理论及支持理由之后,可知授权说最为妥当。最后,关于权利类型问题,发现在承认其为形成权,以及适用诉讼时效之间,...

    计算机安全基础课程补充资料.rar

    计算机安全基础课程补充资料.rar 计算机安全基础课程补充资料.rar

    基础linux补充笔记.md

    基础linux补充笔记.md

Global site tag (gtag.js) - Google Analytics