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

深圳企业高端网站建设/石家庄seo优化

深圳企业高端网站建设,石家庄seo优化,搜索网站显示网页无法访问,企业信息网官网1、什么是散列码? 散列码(hash code)是由对象导出的一个整型值。没有规律,一般两个不同对象的散列码不相同。 字符串散列码Hello69609650Harry69496448 那么他们是如何得出这样的散列码呢?在String类中使用如下方法进…

1、什么是散列码?

散列码(hash code)是由对象导出的一个整型值。没有规律,一般两个不同对象的散列码不相同。

字符串散列码
Hello69609650
Harry69496448

那么他们是如何得出这样的散列码呢?在String类中使用如下方法进行计算:

public int hashCode() {int h = hash;if (h == 0 && value.length > 0) {char val[] = value;for (int i = 0; i < value.length; i++) {h = 31 * h + val[i];}hash = h;}return h;
}

在String类中有个私有实例字段hash表示该串的哈希值,在第一次调用hashCode方法时,字符串的哈希值被计算并且赋值给hash字段,之后再调用hashCode方法便可以直接取hash字段返回。由于hashCode方法定义在Object类中,因此每个对象都有一个默认的散列码,其值由对象的存储地址得出。

从Object角度看,JVM每new一个Object,它都会将这个Object丢到一个Hash表中去,这样的话,下次做Object的比较或者取这个对象的时候(读取过程),它会根据对象的hashCode再从Hash表中取这个对象。这样做的目的是提高取对象的效率。

  1. hashCode的存在主要是用于查找的快捷性,用来在散列存储结构中确定对象的存储地址的;

  2. 如果两个对象相同, equals方法一定返回true,并且这两个对象的hashCode一定相同;除非重写了方法.

  3. 如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;

  4. 两个对象的hashCode相同,并不一定表示两个对象就相同,也就是equals方法不一定返回true,只能够说明这两个对象在散列存储结构中,如Hashtable,他们存放在同一个篮子里。

2、散列码的作用

Java中的集合(Collection)有两类,一类是List,再有一类是Set。前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。 equals方法可用于保证元素不重复,但是,如果每增加一个元素就检查一次,如果集合中现在已经有1000个元素,那么第1001个元素加入集合时,就要调用1000次equals方法。这显然会大大降低效率

于是,Java采用了哈希表的原理。哈希算法也称为散列算法,是将数据依特定算法直接指定到一个地址上。这样一来,当集合要添加新的元素时,先调用这个元素的HashCode方法,就一下子能定位到它应该放置的物理位置上

  1. 如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;

  2. 如果这个位置上已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了;

  3. 不相同的话,也就是发生了Hash key相同导致冲突的情况,那么就在这个Hash key的地方产生一个链表,将所有产生相同HashCode的对象放到这个单链表上去,串在一起(很少出现)。这样一来实际调用equals方法的次数就大大降低了

参考链接:

hashCode方法的作用

浅谈Java中的hashcode方法

http://www.jmfq.cn/news/5147623.html

相关文章:

  • 曲阳网站制作公司/深圳哪里有网络推广渠避
  • 网站建设我们的优势/五合一网站建设
  • 网站建设与设计试题/seo推广任务小结
  • 闸北网站建设/百度开发平台
  • 烟台市委网站官网/销售新手怎么找客源
  • 如何根据网址攻击网站/站长之家产品介绍
  • 潍坊网站建设案例/网络营销公司注册找哪家
  • 做美瞳网站需要什么资质/百度一下你就知道官网
  • 提供免费主页空间的网站/中国十大网络营销平台
  • b2c网站比较/守游网络推广平台登陆
  • 怎么用文件做网站/管理培训机构
  • 网站怎么做关键词搜索排面/软文代写
  • 北京鑫创网站建设/百度云搜索引擎入口
  • 新类型的网站/seo分析工具
  • 网站上的菠菜游戏哪里可以做/铜川网络推广
  • 网站中flash怎么做/郑州百度推广代运营
  • 网站架构需求/网站seo具体怎么做?
  • 中药材天地网做中药零售网站/推广的十种方式
  • 做外卖骑手用哪个网站/网站建设的整体流程有哪些
  • 常州天宁区做网站公司/最新疫情爆发
  • 可以做免费广告的网站有哪些/网站链接提交收录
  • wordpress该字体/首页优化公司
  • 推荐设计感强的网站/优化大师免费下载安装
  • 帮网站做推广赚钱吗/app广告联盟
  • seo推广的特点有/seo经验是什么
  • 彬州市人民政府门户网站/东莞推广服务
  • 天津市做公司网站的公司/百度关键词指数查询工具
  • 高端网站鉴赏/福州网站建设策划
  • 睢县做网站的公司/网站宣传方法
  • 做企业网站建设/域名查询ip