简述哈希表

哈希表:数组+链表+红黑树;

哈希值: 十进制的地址值

哈希表:

JDK1.8之前:数组+链表

JDK1.8以后:

数组+链表:同一个哈希值下的元素少于等于8个

数组+红黑树:同一个哈希值下的元素多余8个

新增过程:

a.计算新增元素的哈希值

 b.(假设数组已经创建出来),通过 hash%数组长度

 c.如果该位置为null:则直接新增

 如果该位置不为null:

 c1.判断该元素是否重复:

 c11.如果不重复,则新增到该索引值位置链表的最后面

 c12.如果重复:则不新增

扩容规则:

什么情况下链表会转红黑树:

 a.当同一索引值下元素个数>8,并且数组长度>=64

 什么情况下会扩容:

 a.当同一索引值下元素个数>8,并且数组长度<64

 b.数组的索引值,占有>到0.75,会扩容

注意:

同一索引值下元素不能超过8个,如果超过

1.扩容,把元素分开,让其小于8个

 2.把链表结构转换成红黑树

 新容量 = 旧容量<<1;

 可以通过构造方法指定加载因子。

 可以通过构造方法指定哈希表数组的长度:

 实际的长度>=传入容量,则最近2的次方的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值