【发布时间】:2014-02-07 09:56:45
【问题描述】:
为什么 Java 将完整数组增长 3/2 而不是 2?
“a的选择取决于库或应用程序:一些教科书 使用 a = 2,但 Java 的 ArrayList 实现使用 a = 3/2 和 C Python 的列表数据结构的实现使用了 a = 9/8。”
【问题讨论】:
-
它是研究成果。因此,如果您想让您的继承
AbstractList并覆盖相应的您的要求。 -
因为随意将大小加倍会比增加 1.5 或 1.1 更快地消耗内存。您需要在调整大小的频率和大小之间进行权衡。可能 1.5 是一个不错的选择。
-
@StefanoSanfilippo 此外,与 1.1 相比,他们可以通过加法和右移快速计算 1.5