String有重写Object的hashcode和toString吗?如果重写equals不重写hashcode会出现什么问题?

String有重写Object的hashcode和toString吗?

    String重写了Object类的hashcode和toString方法。


当equals方法被重写时,通常有必要重写hashcode方法,以维护hashCode方法的常规协定,该协定声明相对等的两个必须有相同的hashcode。

   1. object1.equals(object2)为true时, object1.hashCode() == object2.hashCode()为true。

   2. object1.hashCode() == object2.hashCode() 为fasle时,object1.equals(object2)必定为false。

   3. object1.hashCode() == object2.hashCode() 为true时, object1.equals(object2)不一定为true。


重写equals不重写hashcode会出现什么问题

  在存储散列集合时(如Set类),如果原对象.equals(新对象),但没有对hashCode重写,即两个对象拥有不同的hashcode,则在集合中将会存储两个值相同的对象,从而导致混淆。因此在重写equals方法时,必须重写hashcode方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值