java - 为什么java中的HashMap内部使用数组来存储Entry对象而不是ArrayList?

标签 java collections hashmap

为什么java中的HashMap内部使用数组来存储Entry对象而不是ArrayList?

最佳答案

原因很可能是 HashMap 需要控制如何根据条目数和给定的 loadFactor 调整其内部表的大小。

因为 ArrayList 没有公开将其内部数组调整为特定大小的方法(HashMap 使用 2 的幂作为其大小来优化重新散列,但是 ArrayList 将容量乘以 1.5),这根本不是一个值得考虑的选项。

此外,即使 ArrayList 确实以同样的方式增加了容量,依靠这个内部细节会将这两个类联系在一起,没有留下任何空间来更改 ArrayList 的内部实现code> 稍后再说,因为它可能会破坏 HashMap 或至少降低内存效率。

关于java - 为什么java中的HashMap内部使用数组来存储Entry对象而不是ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42872642/

相关文章:

lambda - 使用 java 8 流对列表项进行分组和求和

java - Java中一个Map包含另一个Map

java - HTTP 状态 400 - 必需的 ... 参数 ... 不存在

java - 如何动态填充注释

java - 当一个数据库发生变化时,自动更新jar文件中的所有数据库

python - 在 Python 中实现可观察集合的推荐方法?

java - 双向链表中给定节点之间的反向链表 - 算法

c# - 返回两个可枚举之间的差异

java - Android - 将 Map<String, Object[]> 保存到文件

java - 迭代 HashMap 直到找到第一个值?