对HashMap扩容的耗时的测试以及自己的理解
2017-03-20 16:52
113 查看
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));//发生扩容耗时: 198666System.out.println("未发生扩容耗时:"+(T3-T2));//未发生扩容耗时:53331、初始化HashMap最大容量,默认加载因子0.75,扩容门限值1024*0.75=7682、当put的元素超过1024*0.75=768(临界值threshold)时,发生扩容,threshold也扩大原来的一倍,数组发生扩容 数组长度扩大原来的一倍,并重新计算新数组的位置. 3、加载因子:为了平衡两个问题,1、减少hash冲突;2、提高空间利用率
相关文章推荐
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 从测试的角度来重新反思我们自己的程序以及我们的程序员之路——“通过追本溯源来进行前瞻性思考”
- ArrayList和Vector的区别,HashMap和Hashtable的区别以及线程安全的理解
- 协方差矩阵的概念,算法以及自己的一些理解
- Jbpm建模添加action和task的说明(自己理解和测试的:)
- 软件测试能力模式(自己理解)
- 自己理解软件测试的流程
- 自己的底层代码库(四)——计时模块,以及效率测试
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 自己编写的使时钟不连续的测试代码-fork---join_none用法以及停止线程
- 我对php的mvc的一些理解,以及自己写的框架
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 很全面的ios面试题以及解答,很多答案不一定全对,网上摘录以及自己的理解
- 由读《深入理解计算机系统》一书引发对程序本质的探讨以及自己的一些理解
- 教大家多个域名绑定一个空间的解决办法,原创,自己已经测试过了,完全可以绕过杀毒软件,以及空间商.