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

中国十大黑科技黑帽seo技巧

中国十大黑科技,黑帽seo技巧,做网站linux和win,工会网站建设请示如果不被重写#xff08;原生#xff09;的hashCode和equals是什么样的#xff1f;不被重写#xff08;原生#xff09;的hashCode值是根据内存地址换算出来的一个值。 不被重写#xff08;原生#xff09;的equals方法是严格判断一个对象是否相等的方法#xff0…如果不被重写原生的hashCode和equals是什么样的      不被重写原生的hashCode值是根据内存地址换算出来的一个值。      不被重写原生的equals方法是严格判断一个对象是否相等的方法object1 object2。   为什么需要重写equals和hashCode方法       在我们的业务系统中判断对象时有时候需要的不是一种严格意义上的相等而是一种业务上的对象相等。在这种情况下原生的equals方法就不能满足我们的需求了       所以这个时候我们需要重写equals方法来满足我们的业务系统上的需求。那么为什么在重写equals方法的时候需要重写hashCode方法呢       我们先来看一下Object.hashCode的通用约定摘自《Effective Java》第45页    在一个应用程序执行期间如果一个对象的equals方法做比较所用到的信息没有被修改的话那么对该对象调用hashCode方法多次它必须始终如一地返回 同一个整数。在同一个应用程序的多次执行过程中这个整数可以不同即这个应用程序这次执行返回的整数与下一次执行返回的整数可以不一致。    如果两个对象根据equals(Object)方法是相等的那么调用这两个对象中任一个对象的hashCode方法必须产生同样的整数结果。  如果两个对象根据equals(Object)方法是不相等的那么调用这两个对象中任一个对象的hashCode方法不要求必须产生不同的整数结果。然而程序员应该意识到这样的事实对于不相等的对象产生截然不同的整数结果有可能提高散列表hash table的性能。      如果只重写了equals方法而没有重写hashCode方法的话则会违反约定的第二条相等的对象必须具有相等的散列码hashCode      同时对于HashSet和HashMap这些基于散列值hash实现的类。HashMap的底层处理机制是以数组的方法保存放入的数据的(NodeK,V[] table)其中的关键是数组下标的处理。数组的下标是根据传入的元素hashCode方法的返回值再和特定的值异或决定的。如果该数组位置上已经有放入的值了且传入的键值相等则不处理若不相等则覆盖原来的值如果数组位置没有条目则插入并加入到相应的链表中。检查键是否存在也是根据hashCode值来确定的。所以如果不重写hashCode的话可能导致HashSet、HashMap不能正常的运作、   如果我们将某个自定义对象存到HashMap或者HashSet及其类似实现类中的时候如果该对象的属性参与了hashCode的计算那么就不能修改该对象参数hashCode计算的属性了。有可能会移除不了元素导致内存泄漏。   扩展       在重写equals方法的时候需要遵守下面的通用约定            1、自反性。                对于任意的引用值xx.equals(x)一定为true。            2、对称性。                对于任意的引用值x和y当且仅当y.equals(x)返回true时x.equals(y)也一定返回true。            3、传递性。                对于任意的引用值x、y和z如果x.equals(y)返回true并且y.equals(z)也返回true那么x.equals(z)也一定返回true。            4、一致性。                对于任意的引用值x和y如果用于equals比较的对象没有被修改的话那么对此调用x.equals(y)要么一致地返回true要么一致的返回false。            5、对于任意的非空引用值xx.equals(null)一定返回false。      重写hashCode方法的大致方式             a、把某个非零常数值比如说17最好是素数保存在一个叫result的int类型的变量中。             b、对于对象中每一个关键域f值equals方法中考虑的每一个域完成一些步骤                 1、为该域计算int类型的散列吗c                     1、如果该域是boolean类型则计算f0:1。                     2)、如果该域是byte、char、short或者int类型则计算intf。                     3、如果该域是float类型则计算Float.floatToIntBits(f)。                     4、如果该域是long类型则计算intf ^ (f32)。                     5、如果该域是double类型则计算Double.doubleToLongBits(f)得到一个long类型的值然后按照步骤4对该long型值计算散列值。                     6、如果该域是一个对象引用并且该类的equals方法通过递归调用equals的方式来比较这个域则同样对这个域递归调用hashCode。如果要求一个更为复杂的比较则为这个域计算一个“规范表示”然后针对这个范式表示调用hashCode。如果这个域的值为null则返回0或者其他某个常数                     7、如果该域是一个数组则把每一个元素当做单独的域来处理。也就是说递归地应用上述规则对每个重要的元素计算一个散列码然后根据步骤下面的做法把这些散列值组合起来。                 2、按照下面的公式把步骤1中计算得到的散列码C组合到result中                     result 31*resultc。             c、返回result。             d、写完hashCode方法之后问自己“是否相等的实例具有相等的散列码”。如果不是的话找出原因并修改。             可以通过org.apache.commons.lang.builder.HashCodeBuilder这个工具类来方便的重写hashCode方法。
http://www.zqtcl.cn/news/531113/

相关文章:

  • 阿里巴巴的网站建设与维护北京发布会直播回放
  • 深圳技术支持 骏域网站建设微信官方公众号
  • dns解析失败登录不了网站推广网站平台有哪些
  • 网站建设许可证网页设计找工作
  • 想通过网站卖自己做的东西网络公司如何建网站
  • 商务网站开发实训任务书网站建设验收合格确认书
  • 手机网站百度关键词排名查询wordpress 敏感词
  • 网站分页导航常州网约车哪个平台最好
  • 上海 网站开发设计方案参考网站
  • 网站一键备案外呼电销系统
  • 淘宝客购物网站源码网站项目开发的一般流程
  • 如何更改公司网站内容网站开发需要哪些文档
  • 洛阳建设工程网站宁波led网站建设
  • 五莲网站建设报价wordpress dux 5.3
  • 怎样做当地网站推广做电商要关注哪些网站
  • 安徽鸿顺鑫城建设集团网站设计外贸英文网站
  • 浦口区教育局网站集约化建设南京淄博网站建设方案
  • 学校网站建设的风险分析wordpress侧边栏显示单个分类列表
  • php网站安装图解帮别人建设网站多少利润
  • vs做的网站如何二手优品哪个网站做
  • 建设银行内部网站6建筑学院官网
  • 大学生做微商网站金华seo扣费
  • 以前老网站邯郸推广网络宣传哪家好
  • 网站建设技术网站建设奉节网站建设公司
  • 动漫视频网站模板动漫制作专业什么电脑最适合
  • 合网站建设注册一个500万的公司需要多少钱
  • 《网站推广策划》wordpress 写博客
  • 网站开发工程师面试问哪些问题免费下载软件商店安装
  • 建网站公司要钱吗公司制作网站跟企业文化的关系
  • 网站改版对用户的影响网站评论怎么做的