这是初始大小。
一般来说HashMap会有一个初始大小,然后在你往这个容器中添加内容的时候,
当size大于初始大小,hashMap就会扩大一倍。扩大的过程要消耗资源的。所以如果你知道你的容器大概是多大,就把它初始化到你要的大小,那样效率会好一点。。

解决方案 »

  1.   

    HashMap(int initialCapacity)是HashMap的一个构造函数
    initialCapacity只是设定一个初始容量而已
    而HashMap本身仍然是一个可变的容器
    往里面加东西的时候会快一些。:)
      

  2.   

    随着条目的增加,Hashtable和HashMap类通过动态地扩展表来处理这个问题。这两个类都有接受表中列表最初数量的构造器,和一个作为参数的负载系数(load factor):public Hashtable(
       int initialCapacity,
       float loadFactor)public HashMap(
       int initialCapacity,
       float loadFactor) 
    将这两个数相乘计算出一个临界值。每次给哈希表添加一个新的条目时,计数就被更新,当计数超过临界值时,表被重新设置(rehash)。(列表数量增加到以前数量的两倍加1,所有的条目转移到正确的列表中。)缺省的构造器设定最初的容量为11,负载系数是0.75,所以临界值是8。当第九条记录被添加到表中时,就重新调整哈希表,使其有23个列表,新的临界值将是17(23*0.75的整数部分)。你可以看到,负载系数是哈希表中平均列表数量的上限,这就意味着,在缺省情况下,哈希表很少会有许多包含不只一条记录的列表。比较我们最初的例子,在那个例子中,我们有1,000条记录,分布在10个列表中。如果我们用缺省值,这个表将会扩展到含有1,500多个列表。但你可以控制这点。如果用负载系数相乘的列表数量大于你处理的条目数,那么表永远不会重制,所以可以仿效下面的例子:
    // Table will not rehash until it
    // has 1,100 entries (10*110):
    Hashtable myHashTable = new Hashtable(10, 110.0F);你可能不想这么做,除非你没有为空的列表节省内存,而且不介意额外的搜索时间,这可能在嵌入系统中会出现这种情况。然而,这种方法可能很有用,因为重新设置很占用计算时间,而这种方法可以保证永远不会发生重新设置这种情况。注意,虽然调用put()可以使表增大(列表数量增加),调用remove()不会有相反的结果。所以,如果你有一个大的表,而且从中删除了大部分条目,结果你会有一个大的但是大部分是空的表。