记HashMap源码分析(jdk1.7)
来源:互联网 发布:地学软件 编辑:程序博客网 时间:2024/06/01 07:47
看了这篇文章:Java集合---HashMap源码剖析,大致意思是:
hashMap底层主要是基于数组和链表来实现的。它维护了一个Entry数组,而Entry维护了一个链表。当put元素时候,会根据key值计算hash,再通过hash计算该元素的在Entry数组中的索引。如果该索引位置没有元素,就将该Entry放到该位置;如果有元素,就采用头插法,插入新的元素,next指向原来的entry。注意:null的key的索引位置为0;如果key存在的话(hash一致,并且equals),替换新值,返回老值。
关于扩容,HashMap有容量、负载因子两个变量,可以在初始化时候指定,默认值是16和0.75,两个数的乘积为临界值,当map的容量达到临界值,并且计算的索引位置中有元素(我所看到的版本中是这样的,有的可能是只要达到临界值就扩容),才会进行扩容:扩容的容量是原来的容量的两倍。
当get元素时候,根据key计算hash,再找到索引位置,遍历链表,找到该元素对应的值。
阅读全文
0 0
- 记HashMap源码分析(jdk1.7)
- JDK1.7 HashMap源码分析
- JDK1.7之 HashMap 源码分析
- HashMap源码分析(基于JDK1.6)
- HashMap源码分析(基于JDK1.6)
- HashMap源码分析(基于JDK1.6)
- HashMap源码分析(基于JDK1.6)
- HashMap源码分析(基于JDK1.6)
- HashMap源码分析(基于JDK1.6)
- HashMap源码分析(jdk1.8)
- HashMap源码分析(基于JDK1.6)
- HashMap源码分析(基于JDK1.6)
- HashMap源码分析(基于JDK1.6)
- HashMap源码分析(基于JDK1.6)
- 【Java】HashMap源码分析(JDK1.8)
- JDK1.8 HashMap源码分析
- JDK1.8 HashMap源码分析
- 【jdk1.8】HashMap源码分析
- iOS-SDWebImage实现原理和理解
- 排序算法代码总结
- JAVA虚拟机字节码执行引擎小结
- 确定比赛名次 HDU
- 分割线
- 记HashMap源码分析(jdk1.7)
- ListView中添加CheckBox,进行多项选择,全选,反选,完美无Bug
- cookie
- myeclipse搭建maven
- 【支付系统学习笔记】 一支付概述(1在线支付流程简介)
- 拓扑排序和关键路径
- Ubuntu14.04分辨率问题
- 多态(多态概述、对象的类型转换、Object类、匿名内部类)
- Json格式