HashMap存入大量数据是否要预定义存储空间

按说HashMap的负载极限为0.75,可是,测试程序并看不出这个结果。待探讨

测试程序如下:

根据结果看不出来预定义有什么影响。

public class test {
    public static void main(String[] args) {
        testRun(5000000);
        testRun(10000000);
        testRun(15000000);
        testRun(20000000);
        testRun(25000000);
        testRun(30000000);
        testRun(35000000);
        testRun(40000000);
        testRun(45000000);
        testRun(50000000);

    }
    public static void testRun(int mapCount){
        System.out.println("============"+mapCount+"=============");
        run(mapCount,new HashMap<>());
        run(mapCount,new HashMap<>(mapCount));
        run(mapCount,new HashMap<>((int)(mapCount/0.75)));
        run(mapCount,new HashMap<>((int)(mapCount/0.6)));
        run(mapCount,new HashMap<>((int)(mapCount/0.5)));

    }

    public static void run(int mapCount,Map<Integer,String> testMap){
         String testValue = "";
         Long startTime0 = System.currentTimeMillis();
         for(int i = 1;i<mapCount;i++){
             testMap.put(i, testValue);
         }
         Long endTime0 = System.currentTimeMillis();
         System.out.println(endTime0-startTime0);
    }
}
============5000000=============
1670
689
981
260
211
============10000000=============
1097
4485
793
386
331
============15000000=============
768
3394
2805
5651
6022
============20000000=============
8155
2153
5089
6078
6809
============25000000=============
8890
6998
10050
9149
10501
============30000000=============
14467
10527
9334
11453
13733
============35000000=============
14493
11978
13706
13809
11461
============40000000=============
15788
13439
18142
13514
11351
============45000000=============
12952
18501
17793
11894
30664
============50000000=============
29528
14534
14272
32803
42236
时间: 2024-10-24 05:12:18

HashMap存入大量数据是否要预定义存储空间的相关文章

【struts2】预定义拦截器

1)预定义拦截器 Struts2有默认的拦截器配置,也就是说,虽然我们没有主动去配置任何关于拦截器的东西,但是Struts2会使用默认引用的拦截器.由于Struts2的默认拦截器声明和引用都在这个Struts-default.xml里面,因此我们需要到这个文件的struts-default包里去看一下.定义如下: 1 <interceptors> 2 <interceptor name="alias" class="com.opensymphony.xwor

php学习笔记 [预定义数组(超全局数组)]

<?php  预定义数组: * 自动全局变量---超全局数组 * * 1.包含了来自WEB服务器,客户端,运行环境和用户输入的数据 * 2.这些数组比较特别 * 3.全局范围内自动生效,都可以直接使用这些数组 * 4.用户不能自定义这些数组,但这些数组的操作方式和自己定义的数组操作的方式一样 * 5.在函数中直接可以使用这些数组 * * $_GET //经由URL请求提交至脚本的变量 * $_POST //经由HTTP POST 方法提交到脚本的变量 * $_REQUEST //经由GET ,

.NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式

开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,.Net基类库针对实际开发中最常用的情形提供了几个预定义好的委托,这些委托可以直接使用,无需再重头定义一个自己的委托类型.预定义委托在.Net基类库中使用的比较广泛,比如在Lambda表达式和并行计算中都大量地使用,需要我们予以关注起来! /* 新语法索引 */ 1.自动属性 Auto-Impleme

复习PHP-语言参考-预定义变量

1.在之前的笔记中已经写过了,所以这里快速过一次. GLOBALS:发现一个有趣的事:$GLOBALS里有一个GLOBALS元素,是一种递归数组,实现的办法是设定一个相同名的元素,值为本身的引用. $php_errormsg:终于发现如果服务器把错误提示关了杂办,判断它是否为NULL就行了. $HTTP_RAW_POST_DATA:原生POST数据.($_POST是优化过的) $argc/$argv: Note: 这个变量仅在 register_argc_argv 打开时可用. 主要用于命令行模

php02~预定义变量

预定义变量 1.作用域问题 php中,自定义变量的作用域有两种:全局作用域(函数外),局部作用域(函数内) 但是: 预定义作用域成为"超全局作用域":即全局作用域+局部作用域的总和. 2:数据类型问题: 一般来说超全局作用域都是数组! 综述: 3.预定义作用域一般包括: $_GET,$_POST,$_SERVER,$_REQUEST,$GLOBALS..... (二)举例说明 $_GET变量 get,一般出现在form表单中:<form action = "abc.ph

环境变量;位置参数变量;预定义变量

环境变量 设置环境变量:1. export 变量名=变量值 2. 变量名=变量值 export 变量名 (export 变量名=变量值 :把该变量声明为环境变量,让这个SHELL中所有的子SHELL都能查看使用这个变量) 查询变量:env 查看进程树:pstree PATH:系统查找命令的路径 PATH=”$PATH”:/root/sh →PATH变量叠加(临时) 系统默认环境变量名都是大写 位置参数变量 $n:n为数字,$0代表命令本身,$1-$9代表第一到第9个参数,10以上的参数用大括号包

PyQt4预定义对话框

PyQt4中的对话框 对话窗口和对话框是现代GUI应用程序必不可少的一部分.生活中“对话”被定义为发生在两人或更多人之间的会话.而在计算机世界,“对话”则时人与应用程序之间的“会话”.人及对话的形式有在输入框内键入内容,修改已有的数据,改变应用程序的设置等.对话框在人机交互中扮演着非常重要的角色. 从本质上说,只存在两种形式的对话框:预定义对话框和定制对话框. 预定义对话框 QInputDialog 输入对话框 QInputDialog提供了一种获取用户单值数据的简洁形式.它接受的数据有字符串,

visual c++中预定义的宏

一.主要目标 (由于visual studio通常包含很多开发环境,通常将其中c/c++的ide称为visual c++ 20xx) 整理下visual c++ 2010下预定义的宏.做一下备忘和了解,在实际编码中可以考虑使用部分宏作为判断标准. 主要参考链接:http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.100).aspx 二.vc++ 2010中预定义宏 注意本文中提及的所有预定义宏都是无参数的,并且不能重定义. 1. __FIL

10.23上午 PHP数组(数组正则表达式、数组、预定义数组)

正则表达式 1.替换 $s = "hello5world"; $s = preg_replace("/\d/","#",$s); echo $s;//输出结果为hello#world,数字被替换成了#. //第一个数字是被替换的内容,"/\d/"表示正则表达式的数字.//第二个参数是要用什么来替换.//第三个参数是要操作的数组. 2.拆分 //$s = "hello5world"; //$attr = pr