判断对象是否一样能否用哈希码来判断不用equals

来源:9-9 Java 中的 Object 类 Ⅱ

慕粉4079680

2018-06-18 12:11

可以直接用哈希码来判断吗 ?我感觉用哈希码更容易些了。。。

写回答 关注

1回答

  • 魔方magic
    2018-06-19 15:02:13

    hashCode 是一个“散列值码”。
    散列值,并不能表现其唯一性,但是有离散性,其意义在于类似于进行hashMap等操作时,加快对象比较的速度,进而加快对象搜索的速度。
    hashCode 和 equals的关系:
    两个对象 equals的时候,hashCode必须相等,但hashCode相等,对象不一定equals。

    最后明白两点就行了:
    1.hashCode()方法存在的主要目的就是提高效率。
    2.在集合中判断两个对象相等的条件,其实无论是往集合中存数据,还是从集合中取数据,包括如果控制唯一性等,都是用这个条件判断的,条件如下:
        首先判断两个对象的hashCode是否相等,如果不相等,就认为这两个对象不相等,就完成了。如果相等,才会判断两个对象的equals()是否相等,如果不相等,就认为这两个对象不相等,如果相等,那就认为这两个对象相等。

    最后总结一句话就是,hashCode()方法存在的主要目的就是提高效率,但是如果你想把对象放到散列存储结构的集合中时,是必须要重写的。

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530559 学习 · 6091 问题

查看课程

相似问题