为什么Java将ArrayList增加3/2?

Geo*_*ton 4 java arraylist

为什么Java将整个数组增长3/2而不是2?

"a的选择取决于库或应用程序:一些教科书使用a = 2,但Java的ArrayList实现使用a = 3/2而Python的列表数据结构的C实现使用a = 9/8."

来源维基百科

And*_*nek 5

一般来说,增长因子的选择主要取决于经验和良好的教育猜测.您必须在不必要的内存使用(对于未使用的数组空间)和不必要的运行时使用(如果必须经常放大数组)之间找到适当的平衡.您还必须在不知道列表有多大的情况下执行此操作.之所以在Java中它是3/2只是因为有人认为它是最好的.

  • 凭借在Java中的资格,"某人"意味着"一流的专家委员会":) (9认同)