https://wenku.csdn.net/answer/dadc893fe43a4a019997fe494c776367
https://nowcoder.com/feed/main/detail/4e8477f3049d460db8dc69e82e6c2cd5?sourceSSR=search
- 扩容时机不同:HashMap 的扩容是在存储元素数量达到负载因子时触发的,而 ArrayList 的扩容是在添加元素时,如果当前元素个数已经达到了数组长度,就会触发扩容操作。
- 扩容方式不同:HashMap 的扩容是将原有的数据重新分配到新的数组中,而 ArrayList 的扩容是直接创建一个更大的数组,将原有的数据复制到新的数组中。
- 扩容成本不同:HashMap 的扩容成本较高,因为需要重新计算哈希值,重新分配存储位置等操作,而 ArrayList 的扩容成本较低,因为只需要将原有数据复制到新数组中即可。
- 扩容频率不同:HashMap 的扩容频率相对较低,因为可以通过调整负载因子来控制扩容的时机,而 ArrayList 的扩容频率相对较高,因为每次添加元素时都需要检查是否需要扩容。