面试题答案
一键面试初始化容量设置过小的影响
- 频繁的扩容操作:HashMap在元素数量达到加载因子(默认0.75)与容量的乘积时会进行扩容。当初始化容量过小,元素快速填满当前容量,频繁触发扩容。扩容时需要重新计算元素位置并复制到新的数组,这是一个代价高昂的操作,严重影响性能。
- 增加哈希冲突:容量小意味着哈希表桶的数量少,更多元素被映射到相同的桶,增加哈希冲突的概率。冲突时元素以链表(或红黑树,当链表长度达到一定阈值)形式存储,查询时间复杂度从理想的O(1) 增加到O(n) 或O(log n)(红黑树情况),降低查询效率。
初始化容量设置过大的影响
- 浪费内存:HashMap底层是数组,容量过大意味着数组占用大量内存空间,即使实际存储的元素不多,这些额外的空间也被浪费。
- 降低哈希表的性能:虽然减少了扩容次数和哈希冲突,但过大的容量使得哈希表稀疏,在查询时,即使哈希函数均匀分布,也会有很多空桶,增加不必要的查找开销,降低整体性能。