专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

map算子相关总结_PHP基础

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 20:27:39       共计:3596 浏览

map算子相关总结?

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。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:关于数学的绘画_java | ·下一条:师承是怎么考试的_java

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有