散列码(hash code)是由对象导出的一个整数值。

散列码没有规律,两个不同的对象x和y,x.hashCode()与y.hashCode()基本上不会相同。

 public static void main(String[] args) {
String str1 = "HELLO WORLD!";
String str2 = "hello world!";
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
}

上面的代码输出两个字符串的散列码:

String 类中计算散列码的源码如下:

可以看出,字符串的散列码是由内容导出的。


Object类是所有类的父类,hashCode()方法定义在Object类中,因此每一个类都有一个默认的计算对象散列码的方法,

使用默认的方法计算对象的散列码得到的值是对象的存储地址。

  如果在子类中重新定义equals()方法,必须重新定义hashCode()方法,如果x.equals(y)放回true,那么x.hashCode()就必须与y.hashCode()具有相同的值。

例如Student.equals()通过学生ID比较对象,那么hashCode()就需要基于ID生成散列码。

hashCode()方法应该返回一个整数值(可以是负数),并合理地组合实体域的散列码,以便让各个不同的对象产生的散列码分布的更加均匀。

一个比较好的生成方法是:

调用Objects.hash()方法,这个方法会对各个参数调用Objects.hashCode()方法,然后组合各个参数的散列值。

最新文章

  1. 根据异常处理对 Java 方法的层次分类
  2. PYTHON 写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
  3. 前端 js 发送验证码
  4. JQuery选择器中含有冒号的ID处理差异的分析
  5. MySQL分库分表环境下全局ID生成方案 转
  6. 解决:mvn archetype:create Abstract class or interface 'org.apache.maven.artifact.repository.ArtifactRepository' cannot be instantiated
  7. PHPCMS v9 在windows2008系统 IIS7 下设置伪静态的方法
  8. JVM性能调优博客
  9. 转 释一首美国民谣:沉默之音(The Sound Of Silence)
  10. IBM芯片新功能:诊断癌症
  11. 初识ELF格式 ABI,EABI,OABI
  12. Gartner 2018 数据库系列报告发布 巨杉数据库连续两年入选
  13. DevExpress GridControl控件行内新增、编辑、删除添加选择框
  14. cumsum函数
  15. 纯css实现不同方向的三角形
  16. LeetCode 1012 Complement of Base 10 Integer 解题报告
  17. 代码面试集锦 2 - Google
  18. 在线js调试工具JSbin、jsFiddle
  19. bzoj1081
  20. VMWare之——宿主机与虚拟机互相ping通,宿主机ping通另一台机器的虚拟机

热门文章

  1. Git 进阶:10大技巧让你迅速提升
  2. oracle函数 RTRIM(c1,[,c2])
  3. 基于Mysql实现分布式锁
  4. pytorch 优化器调参
  5. [转]Android Studio实现代码混淆
  6. Pytorch使用GPU
  7. win10 uwp xaml 绑定接口
  8. Lua环境搭建之使用EditPlus搭建Lua开发环境
  9. Ralasafe配置手册
  10. Junit测试代码时出现initializationError 错误