• hashCode方法和equals方法比较


    为什么用HashCode比较比用equals方法比较要快呢?我们要想比较hashCode与equals的性能,得先了解HashCode是什么。

    HashCode

    HashCode是jdk根据对象的地址字符串或者数字利用hash算法计算出的int类型的数值

    Java采用了哈希表的原理,将数据依照特定算法直接指定到一个地址上,这样可以简单的理解为hashCode方法返回的就是对象存储位置的映像

    因此HashCode能够快速的定位对象所在的地址,并且根据Hash常规协定,如果两个对象相等,则他们一定有相同的HashCode。

    equals

    equals方法对比两个对象实例是否相等时,对比的就是对象示例的ID(内存地址)是否是同一个对象实例;该方法是利用的等号(==)的判断结果。

    所以HashCode的效率远远大于equals.

    但是HashCode并不保证唯一性,因此当对象的HashCode相同时,再利用equals方法来判断两个对象是否相同,就大大加快了对比的速度。

     

    总结

    等号(==):对比对象实例的内存地址来判断是否是同一对象实例;也可以说是判断对象实例是否物理相等。

    equals():当对象没有重写Object的equals方法时,equals方法判断的是对象实例的ID,也就是内存地址,是否是同一对象实例;该方法就是使用等号(==)的判断结果。Object类的源码如下:

    public boolean equals(Object obj) {
            return (this == obj);
        }

    当对象所属的类重写equals方法时,要根据自身逻辑来判断是否相等。

     hashCode():根据对象的地址或字符串或者数字等计算出对象实例的哈希码。可以简单的说,hashCode比较的是对象的内存地址。

  • 相关阅读:
    JSON.stringify 方法模拟
    leetcode算法:1648. 销售价值减少的颜色球
    Dynamics 365 Marketing Trail
    Power Automate expression中的 string 相关公式
    Adaptive Card 和 Power Automate
    Power Automate Approval 功能初始化失败
    linux编程-csh
    王道论坛_PC端播放和下载视频
    记树莓派的一个项目_RGB1602的实际使用
    提取植物大战僵尸静态资源
  • 原文地址:https://www.cnblogs.com/dsitn/p/7416720.html
Copyright © 2020-2023  润新知