当前位置: 首页 > news >正文

黑色大气网站/免费建站免费网站

黑色大气网站,免费建站免费网站,b2b第三方电商平台有哪些,厦门网站建设哪家好厦门最好的网站建设1、剖析 equals() //Object类中的equals() public boolean equals(Object obj) { return (this obj); } 内部是使用“”比较引用是否指向同一个对象。所以在不覆盖equals方法时,使用equals方法和的比较结果是一样的。(链接:Java中的equals()…

1、剖析 equals()

//Object类中的equals()
public boolean equals(Object obj) {     return (this == obj);     } 

内部是使用“==”比较引用是否指向同一个对象。所以在不覆盖equals方法时,使用equals方法和==的比较结果是一样的。(链接:Java中的equals() 和 “==”的区别)


2、什么时候应该覆盖equals方法呢?

当我们希望知道它们在逻辑上是否相等,而不是想知道它们是否指向同一个对象时,我们便需要覆盖equals方法了。

覆盖equals方法的通用约定:

1、自反性  对于任何非null的引用值,x.equals(x) == true

2、对称性 对于任何非null的引用值x,y,x.equals(y) == y.equals(x)

3、传递性  对于任何非null的引用值x,y,z,x.equals(y) ==true,y.equals(z)==true,------>x.equals(z)==true

4、一致性 对于任何非null的引用值x,y,只要equals的比较操作在对象中所用的信息没有被改变,多次调用x.equals(y)返回的值不变。

5、对于任何非null的引用值x,x.equals(null)必须返回false。

实现equals()方法的小技巧:

1,使用==操作符检查 参数是否为这个对象的引用,是则直接返回true。

2,使用instance操作符检查 参数是否为正确的类型。

3,把参数转换成正确的类型。

4,对于该类中的每个关键域,检查参数中的域是否与该对象对应的域匹配。先比较最有可能不一致的域。

5,覆盖equals方法时总要覆盖hashCode方法。

6,不要将equals声明中的Object对象替换为其他对象。

3、为什么覆盖equals方法时总要覆盖hashCode方法?

因为如果不这么做的话,就违反了Object.hashCode的通用约定,导致该类无法结合所有基于散列的集合(HashMap,HashSet,HashTable)一起正常运作.

  1. 在应用程序执行期间,只要equals方法的比较操作用到的信息没变,那么对这同一个对象调用多次,hashCode方法都必须始终如一的返回同一个整数.但在应用程序的多次执行中,即重新启动后结果可以不一致.
  2. 如果两个对象根据equals比较是相等的,那这两个对象调用hashCode方法返回的结果必须是一样的.
  3. 如果两个对象根据equals比较是不相等,那这两个对象调用hashCode方法返回的结果不一定不同.但不同的对象产生不同的hasCode,可以提高散列表的性能.
  4. 不覆盖hashCode而违反的关键约定是第二条:相等的对象必须具有相等的hashCode.
  5. 如果相同的对象具有不同的hashCode,那么将对象放入hashMap中,对象会被存放到不同的桶中,当去get 时,虽然是同一个对象,但是由于生成的hashCode不同,会到不同的桶中去找,此时便找不到那个对象。


由于在项目里经常会用到HashMap,所以在面试的时候基本会问这个问题。

  • 你有没有重写过hashCode方法?

  • 你在使用HashMap时有没有重写hashCode和equals方法?你是怎么写的?

  • 一个对象的hashcode可以改变么?

  • 如果大家要在HashMap的“键”部分存放自定义的对象,一定要在这个对象里用自己的equals和hashCode方法来覆盖Object里的同名方法。

http://www.lbrq.cn/news/1372519.html

相关文章:

  • 张家界网站制作/大一html网页制作作业
  • 帮做装修设计的网站/百度查重免费入口
  • 重庆做网站推广的/网络销售好不好做
  • 可以上传自己做的视频的网站吗/网络服务平台
  • wordpress保存图片不显示/郑州seo建站
  • dw做的网站如何上传云服务器/下列关于seo优化说法不正确的是
  • 衡水企业做网站推广/推推蛙seo
  • 生活家装饰官方网站/宁波网站推广找哪家
  • wordpress调用大类下的分类列表/什么优化
  • 响应式网站的几种尺寸/艺考培训
  • 湖南营销网站建设/博客营销
  • php做网站框架/网络营销与市场营销的区别
  • wordpress承载压力/seo入门免费教程
  • 上海住房和建设交通委员会网站/万网商标查询
  • php网站建设与维护/百度一下首页网页
  • 网站建设背景和目标/品牌推广方式都有哪些
  • 浙江省政府加强政府网站建设方案/百度网络营销中心app
  • 重庆做网站的公司有哪些/网站主题
  • 贵金属网站模板/怎样推广自己的网站
  • 做天猫网站要多少钱/代发新闻稿最大平台
  • 做网站推广的优势/网站收录一般多久
  • 网站被攻击怎么让百度重新蜘蛛自动抓/网络营销的推广手段
  • asp.net 动态网站开发/淘宝关键词指数查询
  • 怎么做网站给国外看见/怎么网上推广自己的产品
  • 代理公司注册有哪些/seo难不难
  • 备案网站名怎么写/电商运营培训正规平台
  • 石家庄网站建设seo/软文发布的平台与板块
  • 餐饮类网站设计/西安发布最新通知
  • 地推加人2元1个/seo的培训班
  • 做夏促的网站有哪些/杭州龙席网络seo
  • RabbitMQ死信队列与消息幂等性实践指南
  • 【嵌入式硬件实例】-555定时器IC的负电压发生器
  • 大语言模型涉及的一些概念(持续更新)
  • Docker 的网络模式
  • jenkins从入门到精通-P1—九五小庞
  • 常用git命令