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

天地心公司做网站怎样深圳工业设计大展2021

天地心公司做网站怎样,深圳工业设计大展2021,电商设计网站有哪些功能,嘉兴网站制作哪里好判断是否是相同对象时#xff0c;hashcode和equals方法的调用顺序 先调用hashcode()方法#xff0c;再调用equals()方法如果hashcode()方法得到的哈希值不同#xff0c;那么两个对象一定不相同#xff0c;不作后续判断如果hashcode()方法得到的哈希值相同#xff0c;那么…判断是否是相同对象时hashcode和equals方法的调用顺序 先调用hashcode()方法再调用equals()方法如果hashcode()方法得到的哈希值不同那么两个对象一定不相同不作后续判断如果hashcode()方法得到的哈希值相同那么还得判断equals()方法根据equals()方法的返回值来具体判断两个对象是否相同为什么哈希值相同还得再判断equals方法 可以去看一下我写的一般哈希 思想与模板代码 理解一下哈希的实现思路 可以发现会产生hash冲突的现象即可能有几个key被存在了相同的hash位置这时候仅凭借hash值是否相等不能判断两个对象是否相等这时候还得根据equals()方法来验证判断下可以理解为一个双保险。 如果想做一些特殊的去重操作不同于一般的去重该怎么有效利用hashcode和equals方法? 这里我给出自己在本科毕业设计中的一个样例。 问题需求 我想在HashSet中存放一个类Comparison这个类的属性有两个对象se1和se2和他们之间的名称相似度NameSimilarity和类别相似度CategorySimilarity public class Comparison{private SE se1; //实体1private SE se2; //实体2private double NameSimilarity; //名称相似度private double CategorySimilarity; //类别相似度public Comparison(SE se1, SE se2, double nameSimilarity, double categorySimilarity) {this.se1 se1;this.se2 se2;NameSimilarity nameSimilarity;CategorySimilarity categorySimilarity;} }然后定义两个Comparison对象怎么才算重复呢 如果一个Comparison对象拥有实体(se1,se2)另一个Comparison对象拥有(se2,se1)或(se1,se2)则这两个Comparison对象被认为是重复的即交换对象里的两个SE对象的位置仍然算是一个Comparison对象。 重写hashcode和equals方法 Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;Comparison that (Comparison) o;return Double.compare(that.NameSimilarity, NameSimilarity) 0 Double.compare(that.CategorySimilarity, CategorySimilarity) 0 ( (se1.equals(that.se1)se2.equals(that.se2)) || (se1.equals(that.se2)se2.equals(that.se1)) ); }Overridepublic int hashCode() {return Objects.hash(se1, se2, NameSimilarity, CategorySimilarity);//return Objects.hash(se1) Objects.hash(se2) Objects.hash(NameSimilarity, CategorySimilarity);// 让se1和se2的顺序对hash值没有影响就行 }equals方法中的( (se1.equals(that.se1)se2.equals(that.se2)) |(se1.equals(that.se2)se2.equals(that.se1)) )描述了上述逻辑。 但是发现这样写仍然不对没发发掘交换位置的情况原来是因为交换位置后Objects.hash(se1, se2, NameSimilarity, CategorySimilarity);算出来的hashcode完全不一样了根据前面讲的逻辑一旦hashcode不一样就不会再去判断equals方法。 优化 Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;Comparison that (Comparison) o;return Double.compare(that.NameSimilarity, NameSimilarity) 0 Double.compare(that.CategorySimilarity, CategorySimilarity) 0 ( (se1.equals(that.se1)se2.equals(that.se2)) || (se1.equals(that.se2)se2.equals(that.se1)) ); }Overridepublic int hashCode() {//return Objects.hash(se1, se2, NameSimilarity, CategorySimilarity);return Objects.hash(se1) Objects.hash(se2) Objects.hash(NameSimilarity, CategorySimilarity);// 让se1和se2的顺序对hash值没有影响就行 }return Objects.hash(se1) Objects.hash(se2) Objects.hash(NameSimilarity, CategorySimilarity);这样写可以让se1和se2的顺序对hash值没有影响但也没有影响性能也没有丧失hashcode的效果。
http://www.w-s-a.com/news/235731/

相关文章:

  • 顺德龙江网站建设百货商城自助下单网站
  • 门户网站采用较多的模式是wordpress自动搜索缩略图
  • 深圳设计功能网站做网站推广怎么做
  • 海口专业网站建设地址wordpress站点标题是什么
  • 青岛做网站那家好网页素材网
  • 宁夏银川做网站的公司网络营销有哪些推广方法
  • 免费域名网站哪个最好东莞企业网站排名
  • dz做网站网址模版
  • 做外贸网站平台中华室内设计师网
  • 三大网络架构seo是啥职业
  • 一个域名可以做中英文两个网站吗搜索引擎营销的6种方式
  • 可以做ppt的网站天津网站建设怎么样
  • 网站怎么做的qq邮件订阅浙江省住房和城乡建设厅网站查询
  • 主机屋网站在线做图片
  • 河南省城乡住房建设厅网站wordpress登陆密码
  • 漳州做网站的公司搭建网站多少时间
  • 网站开发实习计划模板微营销手机
  • 网站设计与制作是做什么工作免费封面设计在线制作生成
  • 网站开发的教学课程网站广告调词软件
  • 进下加强新闻宣传网站建设入门 做网站 书籍
  • 电商网站主题photolux wordpress
  • 周口专业做网站公司深圳市宝安区松岗街道邮政编码
  • 上海企业网站推广方法网络营销策划方案框架
  • 一流的常州网站建设机械加工网报价
  • 上海响应式网站建设公司seo课程总结
  • vs网站开发教程昆山普立斯特做的有网站
  • 柳州网站seo网站swordpress 输出内容
  • 网站设计制作电话多少网站流量下降
  • 沈阳做网站推广的公司唐山哪家做网站好
  • 国外著名网站建设公司WordPress破解怎样主题修复