首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

容器_Map_HashMap 底层实现

哈希表的结构和特点

由于底层数据结构采用哈希表的结构

hashtable 也叫散列表

特点:快 很快 神奇的快

结构:结构有多种

最流行、最容易理解:顺序表+链表

主结构:顺序表每个顺序表的节点在单独引出一个链表

(可以理解为数组加链表的组合)

如何添加数据?

计算哈希码(调用 hashCode(),结果是一个 int 值,整数的哈希码取自身即可)

计算在哈希表中的存储位置 y=k(x)=x%11 x:哈希码 k(x)函数 y:在哈希表中的存储位置

如何减少冲突因此,一般情况下,装填因子取经验值 0.5

.哈希函数的选择直接定址法 平方取中法 折叠法 除留取余法(y = x%11)查询相关资料

JDK1.8 开始,当链表的个数>=8 时,就会将链表转为红黑树,目的是为了减少查询比较的次数

微信凑字数

如何添加数据?

计算哈希码(调用 hashCode(),结果是一个 int 值,整数的哈 希码取自身即可)

计算在哈希表中的存储位置 y=k(x)=x%11 x:哈希码 k(x) 函数 y:在哈希表中的存储位置

如何减少冲突 因此,一般情况下,装填因子取经验值 0.5

.哈希函数的选择 直接定址法 平方取中法 折叠法 除留取余法(y = x%11)查询相关资料

JDK1.8 开始,当链表的个数>=8 时,就会将链表转为红黑树, 目的是为了减少查询比较的次数

如何添加数据?

计算哈希码(调用 hashCode(),结果是一个 int 值,整数的哈 希码取自身即可)

计算在哈希表中的存储位置 y=k(x)=x%11 x:哈希码 k(x) 函数 y:在哈希表中的存储位置

如何减少冲突 因此,一般情况下,装填因子取经验值 0.5

.哈希函数的选择 直接定址法 平方取中法 折叠法 除留取余法(y = x%11)查询相关资料

JDK1.8 开始,当链表的个数>=8 时,就会将链表转为红黑树, 目的是为了减少查询比较的次数

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200316A0IO8G00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券