美文网首页
面试 --- 1.1 关于equals、hashcode重写问

面试 --- 1.1 关于equals、hashcode重写问

作者: Miki_Zhang | 来源:发表于2018-07-04 21:05 被阅读25次

    1.String类为什么要重写equals,是如何重写的。

    ---- 我们在定义类时,经常会希望两个不同的对象的某些属性值相同就认为他们相同,所以我们要重写equals方法,也要重写hashcode方法,因为hashcode准则规定,equals返回true,他们的hashcode必须要返回相同的值。

    2.什么情况下需要重写hashcode、equals方法

    --- 当我们自己定义一个类,想要把它的示例保存到集合中时,我们就需要重写这两个方法;集合有两个类,一个是list,一个是set。以hashset为例:hashset存放元素时,根据元素的hashcode快速找到存储的位置,如果这个位置有元素,两个对象通过equals比较,如果返回true则不插入,如果返回false则会以链表形式在同一位置存放两个元素,这样就会降低hashset 的性能,因此不能快速定位。还有一种情况就是hashcode返回值不同,而equals返回true,这时候hashset会把这两个元素都存进去,这就和set不重复相矛盾。因此我们重写equals时,一定要重写hashcode

    相关文章

      网友评论

          本文标题:面试 --- 1.1 关于equals、hashcode重写问

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