HashMap初始化容量

在使用HashMap的过程中ideal提示我们为HashMap指定初始化容量,这样的话可以减少扩容次数,提高效率,那容量初始化为多大合适呢?

有这样一个公式:初始化容量  = 要存入的容量/负载因子 ;如果为小数需要向上取整

例如:想存入75个元素,负载因子为0.75,那么指定的初始化容量就为100;

HashMap默认的初始化容量为16,负载因子为0.75

但是实际上HashMap的实际容量并不一定等于我们指定的初始化容量,实际的值为我们指定的值向上取到2的幂次方,若该数就为2的幂次方那就是该数

验证程序如下:因为HashMap的capacity()的访问级别为包的级别,所以不能直接访问,我们通过反射来进行验证:

 HashMap<String,String> map = new HashMap<String,String>(3);
       Class clazz = map.getClass();
       Method method = clazz.getDeclaredMethod("capacity");
       method.setAccessible(true);
       System.out.println(method.invoke(map));
心有多大,天有多高,一起奋斗!!
原文地址:https://www.cnblogs.com/zhaolei1996/p/12444580.html