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

做网站需要下载哪些软件计算机网页设计与制作教程

做网站需要下载哪些软件,计算机网页设计与制作教程,建设网站论文,php网站开发实例项目小Hub领读#xff1a;虽然是很基础的一篇文章#xff0c;但是对于equals、hashcode两个方法#xff0c;相信很多人都与其中的规则不熟悉#xff0c;来跟着小Hub花个8分钟回顾一下#xff01;作者#xff1a;不学无数的程序员https://my.oschina.net/u/4030990/blog/31341… 小Hub领读虽然是很基础的一篇文章但是对于equals、hashcode两个方法相信很多人都与其中的规则不熟悉来跟着小Hub花个8分钟回顾一下作者不学无数的程序员https://my.oschina.net/u/4030990/blog/3134199在 EffectiveJava中第九条规定在覆盖 equals()方法时总要覆盖 hashCode()方法。这是为什么呢接下来我们就介绍一下这两个方法。Java中的 equals()方法和 hashCode()方法都是在 Object类中的方法而在Java中所有的类都是 Obejct类的子类所以Java中所有的方法都会有这两个方法的默认实现。equals方法Object类中的 equals()方法定义如下public boolean equals(Object obj) { return (this obj);}我们发现在 equals()方法中就关键的 那么 在Java中有什么含义呢我们都知道在Java中分为基本数据类型和引用数据类型。那么 在这两个类型中作用是不一样的。基本数据类型比较的是 两边值是否相等引用数据类型比较的是 两边内存地址是否相等基本数据类型包括 byte, short, char, int, long, float, double, boolean而通过Java文档中的 equals()方法描述所有要实现自己的 equals()方法都要遵守下面几个规则自反性对于任何对象x x.equals(x)应该返回 true对称性对于任何两个对象x和y如果 x.equals(y)返回 true那么 y.equals(x)也应该返回 true传递性对于多个对象x,y,z如果 x.equals(y)返回 true, y.equals(z)返回 true那么 y.equals(z)也应该返回 true一致性对于两个非空对象x,y在没有修改此对象的前提下多次调用返回的结果应该相同对于任何非空的对象x x.equals(null)都应该返回 falsehashCode方法Object中的 hashCode()方法是一个本地方法返回一个 int类型的哈希值。public native int hashCode();在 hashCode()方法中也有一些规约如果对象在使用 equals方法中进行比较的参数没有修改那么多次调用一个对象的 hashCode()方法返回的哈希值应该是相同的。如果两个对象通过 equals方法比较是相等的那么要求这两个对象的 hashCode方法返回的值也应该是相等的。如果两个对象通过 equals方法比较是不同的那么也不要求这两个对象的 hashCode方法返回的值是相同的。但是我们应该知道对于不同对象产生不同的哈希值对于哈希表(HashMap等等)能够提高性能。equals方法和hashCode方法会在哪用到这两个方法经常出现在Java中的哪个类里面呢如果看过 HashMap源码的应该了解这两个方法经常出现在 HashMap中。网上介绍 HashMap类的文章有很多了这里就简单介绍一下 HashMap。当一个节点中的链表超过了8的时候就会变为红黑树以解决链表长度过长以后查询速度慢的缺点。HashMap是由数组和链表组成的高效存储数据的结构。那么是如何确定一个数据存储在数组中的哪个位置呢就是通过 hashCode方法进行计算出存储在哪个位置还记得我们上面讲 hashCode方法说了有可能两个不同对象的 hashCode方法返回的值相同那么此时就会产生冲突产生冲突的话就会调用 equals方法进行比对如果不同那么就将其加入链表尾部如果相同就替换原数据。计算位置当然不是上面简单的一个 hashCode方法就计算出来中间还有一些其他的步骤这里可以简单的认为是 hashCode确定了位置。什么时候去覆盖这两个方法呢如果你不将自定义的类定义为 HashMap的key值的话那么我们重写了 equals方法而没有重写 hashCode方法编译器不会报任何错在运行时也不会抛任何异常。如果你想将自定义的类定义为 HashMap的key值得话那么如果重写了 equals 方法那么就必须也重写 hashCode方法。接下来我们可以看一下我们使用自定义的类作为 HashMap的key并且自定义的类不重写 equals和 hashCode方法会发生什么。自定义的类BuilderNoArgsConstructorAllArgsConstructorclass CustomizedKey{ private Integer id; private String name;}接下来我们看使用自定义的类作为keypublic static void main(String[] args) { MapCustomizedKey, Integer data getData(); CustomizedKey key CustomizedKey.builder().id(1).name(key).build(); Integer integer data.get(key); System.out.printf(String.valueOf(integer));}private static MapCustomizedKey,Integer getData(){ MapCustomizedKey,Integer customizedKeyIntegerMap new HashMap(); CustomizedKey key CustomizedKey.builder().id(1).name(key).build(); customizedKeyIntegerMap.put(key,10); return customizedKeyIntegerMap;}我们可以看到程序最后打印的是一个 null值。原因正如上面我们说的一样。hashCode用来计算该对象放入数组中的哪个位置因为是两个都是new的对象所以即使里面的值一样但是对象所处的地址却不同所以使用默认的 hashCode也就不同当然在 hashMap中就不会认为两个是一个对象。接下来我们就重写一下这两个方法。如果我们使用 IDEA的话那么直接使用快捷键即可。接下来我们看我们实现的两个方法BuilderNoArgsConstructorAllArgsConstructorclass CustomizedKey{ private Integer id; private String name; Override public boolean equals(Object o) { if (this o) return true; if (o null || getClass() ! o.getClass()) return false; CustomizedKey that (CustomizedKey) o; return Objects.equals(id, that.id) Objects.equals(name, that.name); } Override public int hashCode() { return Objects.hash(id, name); }}然后我们再次运行上面的程序发现输出打印已经变成了 10。我们也能够使用 Lombock提供的 EqualsAndHashCode注解简化代码代码地址https://github.com/modouxiansheng/Doraemon(完)MarkerHub文章索引https://github.com/MarkerHub/JavaIndex【推荐阅读】知乎问答搞开发就怕加班还学不到东西很全很牛逼看完这篇Elasticsearch实战我觉得我可以写个百度~基于Jwt资源无状态认证权限管理系统bootshiro别用Date了Java8新特性之日期处理现在学会也不迟eblog项目讲解视频上线啦长达17个小时好文章点个在看
http://www.zqtcl.cn/news/673448/

相关文章:

  • 婚庆设备租赁网站源码如何进行网站的建设和维护
  • 青岛做网站公wordpress文章付费阅读
  • 小灯具网站建设方案360优化大师
  • 开发公司与物业公司前期合同网站优化的推广
  • 汉堡云虚拟主机aso安卓优化公司
  • 医院 网站建设 新闻营销外包
  • 优秀网站网址郑州无痛人流哪家医院好
  • 备案网站能打开吗大良营销网站建设流程
  • 哪些网站可以做淘宝店招石油网站编辑怎么做
  • 网站出现建设中集团网站建设特点
  • asp网站开发 pdf企业展厅设计公司盛世笔特
  • 怎么创建网站 免费的免费开源的网站系统
  • 中山精品网站建设资讯网页设计师就业趋势
  • 网站建设哪家好 万维科技wordpress广告公司模板
  • 如何选择建网站公司网站页面html静态化
  • 建设银行网站入口网页设计培训 周末双休
  • 做企业网站建设的公司为什么企业网站不是开源系统
  • 网站客户端怎么做的做汽车脚垫版的网站
  • 做数学题挣钱的网站广西建筑特种作业证件查询官网
  • 汉字叔叔花了多少钱做网站免费原创视频素材
  • 网站开发提现功能互联网推广工作好做吗
  • 做阿里渠道的销售要有哪些网站网站评论怎么做的
  • 建设中网站如何上传图片深圳营销型网站建设设计公司
  • 建设电商网站需要多少钱家具网页设计素材
  • 物流网站html5模板网站整站开发
  • 网站随机代码网站开发技术试验教程
  • 做翻译 网站吗仿京东电商的网站开发报价
  • 霞山网站建设公司网站开发怎样手机号验证
  • 大型门户网站建设苏州优化网站建设
  • 网站步骤怎么搭建个人网站