为了账号安全,请及时绑定邮箱和手机立即绑定

Adroid Studio

有用AS的吗???请问equals()和hashCode()是选择哪个模式的???

正在回答

1 回答

equals():反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用,也可能是值类型的值。

hashCode():计算出对象实例的哈希码,并返回哈希码,又称为散列函数。根类Object的hashCode()方法的计算依赖于对象实例的D(内存地址),故每个Object对象的hashCode都是唯一的;当然,当对象所对应的类重写了hashCode()方法时,结果就截然不同了。

  之所以有hashCode方法,是因为在批量的对象比较中,hashCode要比equals来得快,很多集合都用到了hashCode,比如HashTable。
 
  两个obj,如果equals()相等,hashCode()一定相等。
  两个obj,如果hashCode()相等,equals()不一定相等(Hash散列值有冲突的情况,虽然概率很低)。
所以:
  可以考虑在集合中,判断两个对象是否相等的规则是:
    第一步,如果hashCode()相等,则查看第二步,否则不相等;
    第二步,查看equals()是否相等,如果相等,则两obj相等,否则还是不相等。



0 回复 有任何疑惑可以回复我~
#1

GODOG 提问者

啊???
2016-09-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409794    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

Adroid Studio

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信