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是红黑树