失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > map算子相关总结 – PHP基础 – 前端 php存在字符串变量

map算子相关总结 – PHP基础 – 前端 php存在字符串变量

时间:2019-11-27 06:45:44

相关推荐

map算子相关总结 – PHP基础 – 前端 php存在字符串变量

1.map的特点:key只有一个,而一个key可以有多个value,并且key值不可以出现重复项。就好比,一个孩子只有一个亲生父亲,而一个父亲可以派生出多个亲生孩子。他继承了AbstractMap类。

2.hashMap可以序列化(即实现了Serializable接口,推荐打开源码看一下,141行),所以线程不安全。如果再线程中一般情况下使用ConcurrentHashMap来操作。在每一个分段上都用锁进行保护,从而让锁的粒度更精细一些,并发性能更好,而 HashMap 没有锁机制,不是线程安全的。

3.hashMap的底层在jdk1.8之前主要是数组和链表组成,jdk1.8之后新增了红黑树的特性。数组是hashMap的主体,而链表是为了解决哈希冲突(下方有对hash冲突的解释)。.HashMap中主要是通过key的hashCode来计算hash值(查看每一个map的哈希值下方标注),然后通过hash值选择不同的数组来存储。

只要hashCode相同,计算出来的hash值就一样,如果存储对象多了,就有可能不同的对象计算出来的hash值是相同的,这就出现了所谓的hash冲突,HashMap的底层是通过链表来解决hash冲突的。

具体就是把相同hash值的HashMap,通过链表的形式进行存储,相当于存储的数组就是哈希表,数组的每个元素都是一个单链表的头结点,链表是用来解决hash冲突的,如果不同的key映射到了数组的同一位置,那么就将其放入单链表中。

4.插入元素的方式有jdk1.8之前的头插法,转换成了尾插法

5.HashMap的默认大小为16,并且一 定是2的指数,每次扩容都为old*2。

如果觉得《map算子相关总结 – PHP基础 – 前端 php存在字符串变量》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。