美文网首页java
java 中的 equals 、hashCode 函数

java 中的 equals 、hashCode 函数

作者: 坚强一点 | 来源:发表于2017-04-20 09:26 被阅读8次

    Java 中对象的比较使用 equals 函数

    equals 函数是 Object 类中定义的,默认的是比较 对象的 应用地址是否相等

    public boolean equals(Object obj) {

        return (this == obj);

    }

    所以自定义对象一般都需要 重写 equals 函数

    而 jdk 内置对象 String Long Integer hashMap 等都重写了 equals 函数

    其中 String 对象的equals 比较  使用 每个 char == 比较 是否相等,如果有一个不相等在返回false

    Long 对象 的equals 比较 会转换为  long 类型之后进行 == 比较

    hashMap 比较每个 key 和 value 是否相等 每个 可以 和 value 桑踹鞥呢  equals  比较

    自定义对象如果没有 重写  equals 则都是比较的应用地址是否相等


    hashCode 是对象的散列码,返回的是 int 类型的值

    对象的散列码是为了更好的支持基于哈希机制的Java集合类,例如 Hashtable, HashMap, HashSet 

    如果2个对象通过equals调用后返回是true,那么这个2个对象的hashCode方法也必须返回同样的int型散列码

    如果2个对象通过equals返回false,他们的hashCode返回的值允许相同。(然而,程序员必须意识到,hashCode返回独一无二的散列码,会让存储这个对象的hashtables更好地工作。)

    非常全面的  equals 和 hashCode 函数详解:

    http://www.cnblogs.com/lulipro/p/5628750.html

    相关文章

      网友评论

        本文标题:java 中的 equals 、hashCode 函数

        本文链接:https://www.haomeiwen.com/subject/vumkzttx.html