天天看点

HashMap多个构造方法的理解

1、创建HashMap除了常用的空方法

2、还有一个入参的,这个入参并不是指创建大小为3的HashMap,而是创建大于3的最小2的n次方大小的HashMap,比如3,实际创建的长度为2^2=4。

以此类推,new HashMap(5)实际创建的大小为2^4=8。

3、两个入参,第一个入参仍是第2点中的入参,而第二个入参则是环境因子。表示,当前创建的大小的HashMap实际可用的空间大小的比例。比如下例,创建的大小为8的HashMap,实际上并不能占用8个长度的空间,而只能占用8*0.75=6。相当于最多只能容纳6个长度的数据。

我们要知道HashMap创建时,如果不指定长度,其实内部是会进行扩容,重新分配空间,分配空间是以当前容量的两倍进行扩容。我们用的空方法中,默认的容量是8,如果内部数据大于8*0.75时,系统自动扩容为16,当然,默认的负载因子也是0.75,这是一个经过java开源团队经过多次实验后决定的相对性能更高的负载因子。