java

java 中的 equals 、hashCode 函数

2017-04-20  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读