java list 大小限制_java – 确保List的容量

private void ensureCapa() {

int newSize = elements.length * 2;

elements = Arrays.copyOf(elements, newSize);

}

我在许多其他网站中找到了类似的方法,并了解了EnsureCapacity的功能.但我不明白为什么长度乘以2(elements.length * 2).是否有特定原因或是否因数据类型而异?

提前致谢.

解决方法:

由于几个原因,列表填满时的容量加倍.

正如@jheimbouch和@ user3437460所说的那样,它直观地说得有点道理.您希望以与当前列表大小成比例的数量增加它.每次在最后添加一些固定元素可能最终对于一个大胖子列表来说真的很糟糕.

总的来说它更有效率.如果你不清楚你的列表的大小(就像设计你自己的基于数组的列表类一般使用时),如果你每次加倍列表的大小,那么平均每个大量插入,每个插入将花费O(1)恒定时间(这称为分摊常数时间操作).

想一想,调整数组大小的成本是n.因此,我们唯一可以调整的是我们经常这样做的频率.我们越经常这样做,我们的数组与实际数据大小绑定得越紧密,因此我们消耗更少的内存.我们做的次数越少,我们就可以节省CPU周期.

简而言之,它在一般情况下在数学上是合理的,并且在内存消耗和处理时间之间取得了非常好的平衡.

标签:java,list

来源: https://codeday.me/bug/20190608/1201516.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值