2010年5月11日星期二

Map初始化

map = new HashMap();
我们经常使用,然后put对象。
这样创建map对象后,map会自动初始化16的长度Entry数组存放对象,增长因子是0.75f。

有一种使用方法,就是我知道要放多少个(如20个)对象有人这么干:
map = new HashMap(20)
这样好吗?当我们存入15个对象后(20*0.75 = 15),map需要进行resize,容量扩展到40(20 * 2)。
所以正确的做法是:
map = new HashMap(20, 1.0f);
或map = HashMap(20 * 0.75);

这样保证map不会进行resize操作,此操作是map最大的损耗。

尤其对于使用map进行装载大量数据(如10W条),最好指定合理容量,减少不必要的resize。
对于只存放几个对象,不必指定任何参数。

没有评论: