美文网首页
hashcode(), equals()

hashcode(), equals()

作者: Ary_zz | 来源:发表于2018-12-11 23:39 被阅读0次

2018-12-11

1、hashCode的存在主要是用于查找的快捷性,为了配合基于散列的集合正常运行,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;

2、如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;

3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;

4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,它们存放在同一个桶里面

equals()

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

有2种情况:

  • 对于一般对象来说,使用equals方法判断的其实是2个对象是否是同一对象
  • 对于覆盖了equals方法的类来说,一般会在方法里通过比较类的内容来决定返回值

hashCode()

这里的hashCode也有2种情况:

  • 对一般的类,hashCode返回一个对象的哈希值,和equals没有关系
  • 对某些特殊类,会创建类对应的散列表,这些类的hashCode方法有如下意义,如果值相同,那么hashCode返回值相同,即散列值相同,反之不成立

相关文章

网友评论

      本文标题:hashcode(), equals()

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