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

南京做网站优化的公司郑州优化公司有哪些

南京做网站优化的公司,郑州优化公司有哪些,深圳企业社保网站官网,外贸网站建设公司服务我们通过HashMap可以得知Cloneable 空接口,表示可以克隆。创建并返回HashMap对象的一个副本。Serializable 序列化接口。属于标记性接口。HashMap对象可以被序列化和反序列化Abstract Map 父类提供了Map实现接口。以最大限度地减少实现此接口所需的工作。我们实际上…

我们通过HashMap可以得知

  • Cloneable 空接口,表示可以克隆。创建并返回HashMap对象的一个副本。

  • Serializable 序列化接口。属于标记性接口。HashMap对象可以被序列化和反序列化

  • Abstract Map 父类提供了Map实现接口。以最大限度地减少实现此接口所需的工作。

我们实际上可以发现一个问题也就是HashMap本事就有实现一个Map接口,但是继承的父类里面还是实现着一个Map接口,为什么要这样?

实际上这是一个官方的小错误JAVA集合框架的创始人Josh Bloch描述这样的写法是一个失误,在java集合框架中,类似的写法也有很多,在设计之初,他认为这样写在某些地方可能是有价值的,知道他意识到并没有,显然JDK的维护者, Oracle 公司后来认为这样小小的错误不值得去修改,所以就这样保存了下来。

HashMap集合类的成员

1.序列化版本号,HashMap实现这个接口的时候自带的一个默认版本号。

private static final long serialVersionUID = 362498820763181265L;

2.为什么数组的长度(2^N)

默认的初始化容量是16。

数组长度设计为2的n次幂的主要原因是什么?

HashMap(int initialcapacity)构造一个带指定初始容量和默认加载因子(0.75)的空 Hashap。

我们通过底层可以得知,在向HashMap进行添加元素的时候,根绝key的hash值去确定在数组中的具体位置,HashMap为了存取的高效,要尽量避免减少哈希碰撞,每个链表的长度大致相同,为了实现这一功能,算法采用了取模hash%length,但是计算机中直接求余效率不如进行位移运算,所以源码中使用了hash&(length-1),而hash%length=hash&(length-1)的前提就是length是2的n幂。

我们来进行验证,我们取哈希值为2和3进行运算,下面是我们通过length为2的n次幂来计算没有出现哈希碰撞。

hash=3 & (8-1)
步骤1: 转换为二进制
hash = 3    →  0000 0011
length-1 =7 →  0000 0111
​
步骤2: 按位与运算0000 0011  (3)
& 0000 0111  (7)
-----------0000 0011  (3) → 最终索引为3hash=2 & (8-1)
步骤1: 转换为二进制
hash = 2    →  0000 0010
length-1 =7 →  0000 0111
​
步骤2: 按位与运算0000 0010  (2)
& 0000 0111  (7)
-----------0000 0010  (2) → 最终索引为2

当我们不按照这样来进行运算,我们将length变成9

hash=3 & (9-1)
步骤 1: 转换为二进制
hash = 3 → 0000 0011
length-1 =8 → 0000 1000
​
步骤 2: 按位与运算0000 0011 (3)
& 0000 1000 (8)
-------------------0000 0000 (0) → 最终索引为 0
​
hash=2 & (9-1)
步骤 1: 转换为二进制
hash = 2 → 0000 0010
length-1 =8 → 0000 1000
​
步骤 2: 按位与运算0000 0010 (2)
& 0000 1000 (8)
----------------0000 0000 (0) → 最终索引为 0

上面两个例子我们可以看的出来如果数组的长度不是2的n次幂,那么就容易出现哈希碰撞。本质是:当数组长度为 2 的幂时,hash & (length - 1) 能让哈希值低位充分参与运算,索引分布更均匀,减少冲突;若长度非 2 的幂,length - 1 二进制含无效高位 0,会压缩索引范围,增大冲突概率,这也是哈希表(如 HashMap )设计中优先选 2 的幂为数组长度的核心原因 。

注意:如果不考虑效率的话,那么长度就可以随便设置了。

http://www.dtcms.com/wzjs/248038.html

相关文章:

  • 做网站英文怎么写上海快速优化排名
  • 密云网站制作案例关键词权重查询
  • 做网站需要考虑什么武汉seo网络优化公司
  • 凡科建站代理平台百度网盘搜索引擎入口
  • 深圳燃气公司地址厦门seo网站推广优化
  • 网站充值平台怎么做的百度下载老版本
  • 做3d任务的网站友情链接检测平台
  • 百度云搜索引擎官网seo优化的优点
  • 企业的网站建设googleseo服务公司
  • 服务器托管收费韶山百度seo
  • 做一个彩票网站需要怎么做即时热榜
  • 用家庭宽带做网站 没有8080端口可以吗百度推广营销页
  • dw修改wordpress主题关键词排名优化怎么做
  • 书籍设计网站推荐自己想开个网站怎么弄
  • 佛山网站建设推荐电商运营自学网站
  • 医疗网站的建设主要竞争对手百度网站推广教程
  • 视频网站建设费用明细产品营销方案案例范文
  • 做网站公司圣辉友联网站排名系统
  • 做网站云服务期普通话的顺口溜6句
  • 网站建设规划书百度快照投诉中心人工电话
  • 可以做女鞋批发的网站站内优化怎么做
  • 企业推广网站有哪些软文营销的三个层面
  • 快彩网站开发hyein seo
  • 刚做的网站在百度上搜不到长沙网站推广seo
  • 建设网站需要造价网站规划
  • 山东济南市网站建设百度推广软件
  • 网站建设哪家好建议兴田德润外贸网站都有哪些
  • 网站建设与网页制作招聘seo是什么职位简称
  • 学生做的动漫网站拍照搜索百度识图
  • 做旅游网站的意义东莞网站营销推广