【8-22 面经学习记录】

8-22 面经学习记录

Java基础复习

  1. 说一说hashCode()和equels()之间的关系
  • 如果两个对象的哈希码相等,那么两个对象不一定相等
  • 如果两个对象equels()返回真,那么两个对象一定相等
  • 因此两个对象equels()返回真,那么他们的哈希码必须实现相等
  • 应用的场景:HashSet实现Set接口的方式。Set中存储的是不重复的对象,当向Set中加入对象时,需要判断Set中是否存在对象,如果使用遍历判断,会使得效率降低,可以首先获取对象的哈希码,将对象散列到集合的某个具体位置,然后再使用equels()对对象进行比较。
  • hashCode() & equels()
  1. 为什么要重写hashCode()和equels()方法
  • 由于Objdect的equels()的默认实现方式是通过==符号实现的,也就是说,只有当两个对象的是同一个对象(地址相同时)才是同一个对象。由此通常会重写一个类的equels()方法,比如将其重写为,当两个对象中的所有属性或者某个属性相等,则判断为这两个对象为同一个对象。
  • 由于hashCode()服务于equels()方法,两者之间具有紧密的管理,因此当重写了equels()之后,表明对象的判断方式改变,因此hashCode()也需要重写。
  • **注意:**String类型被final修饰,当String的值改变时,其地址也会同时改变,JVM维护了一个字符串线程池,其中产生的字符内容和地址是唯一对应的,也就是地址相等,内容则一致,内容一致那么地址也相等,因此在使用String类型作为key关键字时,不用改变默认的equels()和hashCode()方法实现。
  • hashCode() & equels()的重写
  • String 与 哈希

定义三个字符串进行判断
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值