当前位置:网站首页 > 技术博客 > 正文

java哈希码值

首先,在定义 Java 哈希码之前,我们需要了解什么是哈希以及它的用途。哈希是对某些数据应用哈希函数的过程。哈希函数只是一个数学函数。不用担心不理解!“数学”并不总是意味着“复杂”。这里哈希仅仅表示我们有一些数据和某种规则,将数据映射到一组字符(代码)。

例如,它可以是十六进制密码。我们将一些任意大小的数据作为输入,并对其应用哈希函数。作为输出,我们得到一个固定大小的数据,比如 32 个字符。通常,这种函数会将一大段数据转换为一个小的整数值。该函数工作的结果称为哈希码。

哈希函数广泛用于密码学,还用于其他一些领域。哈希函数可以不同,但它们全都具有特定的属性:

  • 特定对象具有特定的哈希码。
  • 如果两个对象相等,则它们的哈希码相同。反过来则不正确。
  • 如果哈希码不同,则对象肯定不相等。
  • 不同的对象可能具有相同的哈希码。不过,这种事可能性极低。如果这样,则会发生冲突,这种情况可能会导致丢失数据。

“合适的”哈希函数会将冲突的概率降至最低。

在 Java 中,哈希函数通常关联 方法。准确地说,将哈希函数应用于 Object 的结果是哈希码。每个 Java 对象都有一个哈希码。一般来说,哈希码是一个由 类的 方法计算出来的数字。通常,程序员会为其对象重写该方法以及与 相关的 方法,以便更高效地处理特定数据。

方法返回一个 int(4 字节)值,它是对象的数字表示。例如,集合使用此哈希码以更有效地存储数据,从而更快地进行访问。

默认情况下,对象的 函数返回存储对象的内存单元的编号。因此,如果未对应用程序代码进行任何更改,则该函数应返回相同的值。如果代码稍有变化,哈希码值也会发生变化。

Java 中使用的哈希码是什么?首先,Java 哈希码助力程序更快运行。例如,如果我们比较某种类型的两个对象 和 ,则运算 所花时间大约是 的 20 倍。

在父类 中,除了 方法之外,还有 ,即用于检查两个对象是否相等的函数。此函数的默认实现只是检查两个对象的链接是否相等。

和 签有合约,所以如果你重写其中一个,则应该重写另外一个,以免破坏这个合约。

现在创建一个类 ,该类带有一个字段 。之后,我们创建 类的两个对象 和 并将它们设置为相同的名称。如果我们使用 类的默认 和 方法,我们肯定会得到不同的,不相等的对象。这就是 Java 中的哈希码的工作原理。这两个对象将具有不同的哈希码,因为它们位于不同的内存单元中, 操作结果将为 false。

运行程序所得的结果如下:

 
  

控制台中的两个 10 位数字是哈希码。如果我们想要拥有相同名称的相同对象怎么办?我们应该做什么?

答案是:我们应该为 类重写 类的 和 方法。我们可以在 IDEA IDE 中自动完成,只需按键盘上的

alt + insert

并选择

Generate -> equals() and hashCode()

即可。

什么是 Java hashCode() - 2

通过示例得到下列代码:

运行此代码的结果:

 

所以现在程序将我们的对象识别为相等并且它们具有相同的哈希码。

Java 中的哈希码是什么? - 2

你还可以自行创建 和 实现,但要小心并记住尽量减少哈希码冲突。下面是 类中我们自己的 和 方法的示例:

类工作展示:

首先,哈希码助力程序更快运行。例如,如果我们比较某种类型的两个对象 和 ,则运算 所花时间大约是 o1.hashCode() == o2.hashCode() 的 20 倍。在 Java 中,哈希原理支持一些流行的集合,例如 、 和

每个 Java 对象都有从 类继承的 和 方法。要获得良好的工作平等机制,你最好为自己的类重写 和 方法。使用哈希码助力程序更快运行

  • 上一篇: 特征提取常用方法
  • 下一篇: selenium_test
  • 版权声明


    相关文章:

  • 特征提取常用方法2025-07-17 21:01:00
  • 常见的模型评估指标有哪些2025-07-17 21:01:00
  • leveldb lrucache2025-07-17 21:01:00
  • dbn-bp2025-07-17 21:01:00
  • 企业微信监控系统2025-07-17 21:01:00
  • selenium_test2025-07-17 21:01:00
  • oracle游标使用场景2025-07-17 21:01:00
  • linux常用命令cp使用例子2025-07-17 21:01:00
  • java webservice开发2025-07-17 21:01:00
  • jconsole使用教程linux2025-07-17 21:01:00