HashMap散列表是Java中用的最广泛的数据结构之一了,因为其查找数据的时间复杂度为常数级的,而且能够保存唯一key,所以使用起来很顺手。
首先分析下它的几个初始属性:1
2
3
4
5
6
7
8
9
10/*结构的核心,一个Node节点类型的数组*/
table
/*map的大小*/
size
/*阈值,数组的占用的位置大于等于这个值就开始扩容了*/
threshold
/*扩容指数*/
loadFactor
/*修改次数,按照注释看,这个值在remove,put操作后都会加1。HashMap的迭代器是fail-fast,用来保证遍历过程中不允许修改map,这个参数在迭代器为fail-fast的类中都存在。*/
modCount;
使用无参构造器初始化HashMap,就会使用默认的数组大小1>>4,扩容指数0.75,阈值就是12
先看看向HashMap中插入节点的代码: