当前位置: 首页 > 面试题库 >

ArrayList容量增加公式

司寇阳曦
2023-03-14
问题内容

在JDK 1.7中,该方法ensureCapacity使用以下表达式来增加ArrayList.java的数组容量:int newCapacity = oldCapacity + (oldCapacity >> 1)因此,看来新容量几乎比旧容量增加了50%。

但是在很多书中都说容量翻了一番…所以书没有更新或我不太了解?


问题答案:

您的理解是正确的,newCapacity比oldCapacity大50%

在Java 6中,newCapacity计算为

int newCapacity = (oldCapacity * 3)/2 + 1;

这是Java之类的开源语言的魅力,您可以看到实现-如果它不符合您的要求,则可以实现自己的实现。



 类似资料:
  • 我试图从SSRS服务器读取报告,问题是我的内存流不能超过65536字节。 到目前为止,我已经尝试过使用内存流,但尚未成功设置其容量,然后再阅读报告本身 上面的MemoryStream必须在我读取文件之前增加它的容量。 我试过在我的应用程序中玩。配置,但我不知道从哪里开始设置内存流的字节容量

  • 我有一个ArrayList: 在我的代码中的某个时候,我在这个数组列表的特定索引处添加了一个新的整数值: 文件表明,对于该方法: 在此列表中的指定位置插入指定元素(可选操作)。将当前位于该位置的元素(如果有)和任何后续元素向右移动(将一个元素添加到其索引中)。 这很好,因为这就是我真正想做的。问题是,每当我这样做时,我的数组的大小都会增加1。也就是说,最初我有一个大小为M的数组,其中填充了零。当我

  • 问题内容: 我对Java有一个基本问题。 当使用默认构造函数声明和初始化时,将创建10个元素的内存空间。现在,当我添加第11个元素时,会发生什么?是否将创建具有20个(或更多)元素容量的新内存空间(这需要将元素从第一个内存位置复制到新位置)或其他东西? 我在这里检查。但是我没有找到答案。 请分享知识。谢谢。 问题答案: 创建一个新数组,并将旧数组的内容复制过来。这就是您在API级别上所知道的。引用

  • 本文向大家介绍Java数组动态增加容量过程解析,包括了Java数组动态增加容量过程解析的使用技巧和注意事项,需要的朋友参考一下 Java数组初始化需要指定数组容量,但是在许多情况下需要动态扩充容量。有两种方法可以实现: 1.采用ArrayList类数组,它可以在需要时自动扩容; 2.采用System.arraycopy方法实现,其声明为:araycopy(Object src,int srcPos

  • 我正在编写一个增量加载管道,将数据从MySQL加载到BigQuery,并使用Google Cloud Datastore作为元数据存储库。 我当前的管道是这样写的: 我面临的问题是,当BigQuery写入步骤失败时,数据存储仍在更新,是否有任何方法在更新数据存储之前等待BigQuery写完成? 谢谢!

  • 问题内容: 我有零片: 我在其中添加一个元素: 为什么在一个nil slice上附加一个元素会使容量增加2? 使用来打印切片显示以下内容: 我也很困惑为什么重新切片会显示一个零,该零既不在原始切片中也不附加在原始切片上: 问题答案: Go可以免费为您提供超出您要求的容量。通过减少所需的分配(可以复制)数量来提高性能。容量只是在需要另一分配之前保留的空间量。 如果至少在我的实验中将5个元素添加到此片