哈希表数据结构

哈希表是数组和单向链表的结合。

HashMap底层是个一维数组,每个数组存储的是一个静态类HashMap.Node。

Node里面有下一个Node的地址,相当于链表,还有哈希值,可以转换成数组的下标。

哈希表数据结构示意图:

在哈希表中查询相当于在字典中先找到对应字母的页,再在这些页中查找。

所以HashMap的key无序且不可重复,不一定挂在那个单向链表上,而且equals方法保证不重复

因为如果一个对象的hashCode方法导致哈希值分布不均匀,那么哈希表就得不到有效利用。

所以一般放入HashSet和HashMap的key的对象需要重写hashCode和equals方法。并且如果equals方法返回true,hashCode返回也必然是true

HashMap的默认初始容量16,默认加载因子0.75。

为了达到散列分布,提高效率,HashMap初始容量推荐为2的指数。

在JDK8以后,HashMap中如果单向链表元素超过8会变成红黑树,小于6会变成单向链表。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值