HashMap基于哈希表的Map接口的实现。此实现提供所有可选的映射 *** 作,并允许使用null值和null键。(除了非同步和允许使用null之外,HashMap类与Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本 *** 作(get和put)提供稳定的性能。迭代collection视图所需的时间与HashMap实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
Map<String, Double> hashMap = new HashMap<>(20)
为什么要设置初始容量:
设置初始容量是为了提高性能,因为当"键值对数量" >0.75 × initialCapacity会进行扩容,每次扩容都要重建hash表,是非常影响性能;初始容量设置过大,又会浪费内存,所以非常有必要设置一个合适的初始容量。
初始容量设置公式:键值对数量/0.75+1
为什么要加1呢?
假如现在需要在map中放入6个键值对,按照公式计算6 / 0.75等于8,那初始容量是不是就得设置成8。肯定不是,如果设置成8,当map中键值对数量达到6个时候,就会进行扩容,所以应当设置成8+1=9才合适。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)