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

网站建设安全方案佛山市seo推广联系方式

网站建设安全方案,佛山市seo推广联系方式,上海正规网站定制,网站开发流程三大部分关于这个问题,看了网上很多答案,感觉都参差不齐,没有答到要点,这次就记录一下! 首先我们为什么要重写equals?这个方法是用来干嘛的? public boolean equals (Object object&#x…

关于这个问题,看了网上很多答案,感觉都参差不齐,没有答到要点,这次就记录一下!

首先我们为什么要重写equals?这个方法是用来干嘛的?

public boolean equals (Object object){return (this == obj);
}

 上面是在Object类里面的定义,可以看到它的作用仅仅是用来确认两个对象地址是否一样!

那实际当中我们肯定不满足于这个方式啊!我们一般是想知道两个对象里面的数据是否对的上!

最直接的例子就是String!这里官方给我们重写了equals方法,从而使得我们在进行比较不同的string的时候比较的不是它们的地址,而是字面值!!!具体源码大家可以自己去看。

我这里也定义了一个类,然后演示一下重定义equals前后的结果:

public class People {private String name;public People(String name){this.name=name;}public void setName(String name) {this.name = name;}public String getName() {return name;}public String toString(){return "Peopel"+"name:"+name;}}
public class a {public static void main(String[] args) {People hj=new People("wx");People nn=new People("wx");System.out.println(hj.equals(nn));}
}

 

这是测试主类,输出是false!(两个对象地址不一样,当时输出false,因为这个时候我们没有重写equals方法!!!) 但是实际当中我们当然期望是true!因为这里两个对象里面属性是完全一样。

那么我们重写一下,看看最后的结果!

public boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;People other = (People) obj;if (name != other.name)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}

 上面是重写的方法,具体的话大家自己看,逻辑也很清楚!

这次我们实现了输出true(开心)

 --------------------------------------------------------------------------------------------------------------------------------至此我们搞懂了重写equals的目的!!

下面正式进入主题!hashcode!

首先定义一下hashcode:它是一个函数,将对象映射成一个整数

那么大家会说,这个函数是什么?

(165条消息) Java 的 HashCode 底层生成分析_董酷酷的博客-CSDN博客_hashcode底层

具体大家可以看这个链接,给大家总结一下哈,这个函数一般是伪随机数生成函数,和对象地址是无关的!(除非你指定编译器参数)

 那么我们为啥要重写这个函数呢?

让含有相同参数的对象 映射成相同的hashcode!!!(这句话很关键,我下面的阐述都是基于此展开的)

有人有会问为什么要映射成相同的hashcode呢?那我举个最简单的例子吧!

我现在有个hashmap,对象为k,v就是1

当你第一次 push一个对象(参数是a)后

第二次 push一个对象(参数也是a)

正常来说我们希望,后面的put操作会覆盖前面的

但如果你不重写hashcode就不会实现覆盖,map里会包含两个对象

这是因为hashmap put的原理是,首先判断对象的hashcode,如果不等,直接判断为不同的key,如果相等,则执行equals方法来看是否相同

下面是代码!

public class a {public static void main(String[] args) {HashMap<People,Integer> map=new HashMap();People cxk=new People("wx");map.put(cxk,1);People yyqx=new People("wx");map.put(yyqx,1);map.forEach((k,v)->{System.out.println(k);});}
}

这是测试类,最后结果是:

 那我们重写hashcode后:

 ok,实际上重写hashcode主要保证的是一致性:相同参数的对象映射到相同的hash值,从而保证我们在集合里面能够正确的实现。

http://www.hkea.cn/news/427762/

相关文章:

  • 做情趣网站需要什么资质sem推广外包
  • 国外网站做任务赚钱的最近新闻有哪些
  • 建设部网站查资质中裕隆百度推广登录平台网址
  • 黄页网站大全免费山东网络推广优化排名
  • 网站文字代码常见的网络营销工具
  • 计算机毕设网站建设怎么改长沙网站设计拓谋网络
  • 类似红盟的网站怎么做aso优化推广
  • vs2013做网站怎样制作免费网页
  • b2c网站的开发无锡网络优化推广公司
  • 网站做视频在线观看营销活动推广方案
  • wordpress多站点统计google图片搜索引擎入口
  • 麻章手机网站建设百度网盘提取码入口
  • 网站后台管理系统的重要技术指标sem竞价托管费用
  • 包头怎样做网站我想做电商怎么加入
  • 株洲企业网站建设品牌2023免费b站推广大全
  • 仿制单页面网站多少钱免费制作网站app
  • 商城网站制作网站长尾词挖掘工具
  • 夹克定制公司trinseo公司
  • 四川智能网站建设制作网站链接分析工具
  • 制作销售网站有哪些宁波网络营销推广咨询报价
  • 佛山做外贸网站服务新闻发稿平台
  • 做网站前怎么写文档域名收录
  • 中信建设有限责任公司钟宁关键词优化的方法有哪些
  • 建站之星平台优化推广网站排名
  • wordpress 网盘 插件郑州seo外包阿亮
  • 怎样建设网站首页广告营销平台
  • wordpress调起淘宝app什么叫做seo
  • 嘉兴做网站优化的公司网站维护公司
  • css层叠样式会不会影响打开网站的速度百度免费下载安装百度
  • 网站模板制作流程nba交易最新消息汇总