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

建网站不花钱免费中电科工程建设有限公司网站

建网站不花钱免费,中电科工程建设有限公司网站,找人做网站被骗,three.js 做的网站小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://wiki.neutronadmin.com/news/342948/

相关文章:

  • 个人做网站 优帮云企业被网站收录
  • 中国电信 网站备案想招聘员工去哪个网站
  • 颍上县建设局网站wordpress迁移器
  • 产品备案号查询平台官网如何做seo网站
  • 西安 网站开发 招聘wordpress 大数据量查询
  • wap网站一览阿里云 wordpress 博客
  • 网站源码和模板如果管理多个wordpress
  • 开发建设网站需要什么人才网站的建设服务
  • 宁波网站建设托管用ip访问没有备案的网站
  • 佛山市桂城建设局网站网页的构成
  • 昆明网站建设建站模板网站设计计划书的要求
  • 设计师个人网站怎么做网站关键字可以修改吗
  • 在线做交互网站高德地图上怎么没有菲律宾
  • 站长要维护网站wordpress 面包屑插件
  • 专业做网站 台州玉环做个简单的导航网站
  • 网站模板在线预览免费企业信息发布平台
  • 网站规划文字说明网站用动态图片做背景怎么写
  • 做外贸怎么登陆国外网站深圳一元购网站建设
  • 烟台正规网站建设浙江房产信息网查询
  • 电商网站建设过程域名评估价格平台
  • 做网站最便宜西安建设工程招投标信息网
  • 房产网站电商怎么做手机软件app制作工具
  • 百度网站禁止访问怎么解除新加坡的网站域名
  • 网站建设山东聚搜网络微信公众号平台及网站建设计划
  • 档案网站的建设北京做网站推广
  • 禁止ip直接打开网站外贸平台网站的营销方式
  • 青岛大型网站建设鞋子网站建设规划书
  • 沧州门户网站wordpress修改字体加载
  • 厦门网站建设方案服务平面设计师参考网站
  • 网站建设文化渠道做装修效果图的网站有哪些