一篇文章教你看懂HashMap

HashMap

底层结构

数组+链表+红黑树
在这里插入图片描述

初始容量为16

加载因子为0.75

扩容机制为每次2倍

扩容临界值为:16*0.75

HashMap的存储方式

  1. 更具对象地址或者对象内容(在类里面自己重写的hashcode和equals方法)来计算出对应的hashcode值(对象的整数表示形式)
//原理
(h=key.hashcode())^(h<<<16)
  1. 根据得到的hashcode的值来用hash算法平均分布到每个位桶上
//原理
h=(n-1&hash
  1. 判断table的索引值,如果为空直接添加,并且将其记录为头节点
  2. 如果不为空先判断key是否与元素相同,如果相同,value覆盖,如果不同指向下一个节点继续比较,直到空为止,到空位置则直接添加

HashMap与Hashtable的区别

  1. 继承不同的体系但是都继承了Map接口
  2. HashMap不同步,不安全,但是效率高。Hashtable同步(通过同步锁来实现),安全按但是效率低
  3. null只要求不同,HashMap键值对可以为null,但是Hashtable不可以为null
  4. 扩容机制不同

​ 1)HashMap 容量为16 ,加载因子为0.75 ,每次扩容两倍

​ 2)Hashtable 容量为11, 加载因子为0.75 ,每次扩容两倍加1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值