总结,为什么要重写hashset的hashcode()和equals()?

Posted maplesu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了总结,为什么要重写hashset的hashcode()和equals()?相关的知识,希望对你有一定的参考价值。

  1. 看了非常多博客,怕自己忘记了,通俗易懂的总结如下

     

    本人总结下:

    重写前,比较地址,hashcode方法如果相等不一定是同一个对象,所以再用equals再比内存地址

    重写后,比较值,重写hashCode方法后,值相同的不同对象返回的是同样的哈希码,但是值不同的不同对象可能也会有相同的哈希码,所以再用重写的equals方法比值

     

    重写前不符合人的思考(如果直接只用equals效率太低,hash比对比较快,最后使用equals方法以防万无一失)

以上是关于总结,为什么要重写hashset的hashcode()和equals()?的主要内容,如果未能解决你的问题,请参考以下文章

HashSet——add remove contains方法底层代码分析(hashCode equals 方法的重写)

谈谈HashSet的存储原理及为什么重写equals必须重写hashcode方法

JavaList,LinkedList,Set,HashSet,LinkedHashSet,hashCode方法,可变参数,为什么重写equals方法必须重写hashCode方法

java基础重写equals()方法的同时要重写hashCode()方法

为啥重写equals方法,一定要重写HashCode方法?

为什么重写equals()就必须重写hashCode(),什么情况下可以不重写hashCode()