Map<String, String> map = new HashMap<String, String>(1024);
for (int i = 0; i < 768; i++) {
map.put("key"+i, "value"+i);
}
Long T1 = System.nanoTime();
map.put("1", "1");
Long T2 = System.nanoTime();
map.put("2", "2");
Long T3 = System.nanoTime();
System.out.println("发生扩容耗时: "+(T2-T1));//发生扩容耗时: 198666
System.out.println("未发生扩容耗时:"+(T3-T2));//未发生扩容耗时:5333
1、初始化HashMap最大容量,默认加载因子0.75,
扩容门限值1024*0.75=768
2、当put的元素超过1024*0.75=768(临界值threshold)时,发生扩容,threshold也扩大原来的一倍,数组发生扩容 数组长度扩大原来的一倍,
并重新计算新数组的位置.
3、加载因子:为了平衡两个问题,1、减少hash冲突;2、提高空间利用率