Java基础知识复习之HashMap

Java基础知识复习(大话HashMap)

前言:HashMap 是日常开发中必须用到的集合类(例如:arrayList、linkedList、hashSet)。先要会用(为什么会这么说呢?简单说不就是key-value 的键值对的数据集合吗?很简单的使用方式,然后通过get、put去取值和赋值),但当你深入的时候你需要明白什么是hashMap,原理,一些特性,更深入点得搞清楚参数,更需要分析其中的优缺点,如果让你实现你会怎么去实现。

1.什么是HashMap?

它是通过key-value键值对存储的集合,每一个键值对都是entry ,这些键值对entry都存放在数组中,并且这些数组就是HASHMAp的主干,每个数组的值初始都是NULL,通过put去赋值,get取值,同时key和value 都可以为空。并且不是有序的。

2.HashMap的底层实现原理

其实说一些get和put的原理。先表达HashMap底层主要是数组和链表实现,每个数组中每个元素都是链表!

比如存储数据时,kay-value传给put方法,通过hash(key)方法计算出hash值和结合数组长度得出一个数组下标index值,

然后hashmap判断key 是否存在,如果不存在则执行插入,如果存在则发生碰撞(如果key equals 返回true 则更新)

返回false ,则插入链表尾部或者红黑树中,1.7是头部插入(),1.8是红黑树  

 


 

转载于:https://my.oschina.net/u/1789682/blog/2052142

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值