当前位置:首页 > Java

java list 如何扩容

2026-03-25 08:27:11Java

Java List 扩容机制

Java中的List接口有多种实现类,其中ArrayList是最常用的动态数组实现。其扩容机制如下:

默认初始容量 ArrayList的默认初始容量为10。当创建ArrayList对象时,如果没有指定初始容量,内部会创建一个长度为10的数组。

触发扩容条件 当向ArrayList添加元素时,如果当前元素数量已达到数组长度(即容量已满),则会触发扩容操作。

扩容计算公式 扩容时,新容量通常为旧容量的1.5倍(即旧容量 + 旧容量右移1位)。计算公式如下:

int newCapacity = oldCapacity + (oldCapacity >> 1);

扩容流程

  1. 计算新容量(通常是旧容量的1.5倍)。
  2. 创建新数组,大小为计算得到的新容量。
  3. 使用System.arraycopy()将旧数组中的元素复制到新数组中。
  4. 更新内部数组引用,指向新数组。

示例代码

// 创建ArrayList
List<Integer> list = new ArrayList<>();

// 添加元素触发扩容
for (int i = 0; i < 20; i++) {
    list.add(i);
}

手动指定初始容量 可以通过构造函数指定初始容量,避免频繁扩容:

List<Integer> list = new ArrayList<>(100);

扩容性能考虑 频繁扩容会导致性能开销,因为每次扩容都需要复制数组。在预先知道大致元素数量的情况下,指定初始容量可以提高性能。

其他List实现的扩容

java list 如何扩容

  • Vector:默认扩容为旧容量的2倍(可通过构造函数指定扩容增量)。
  • LinkedList:不需要扩容,因为是链表结构。
  • CopyOnWriteArrayList:每次修改操作都会创建新数组。

标签: javalist
分享给朋友:

相关文章

java如何运行

java如何运行

运行Java程序的基本方法 Java程序的运行需要经过编写、编译和执行三个主要阶段。以下是具体步骤: 编写Java源代码 创建一个以.java为后缀的文件,例如HelloWorld.java。文件内…

如何删除java

如何删除java

卸载 Java 的步骤 Windows 系统: 打开控制面板,选择“程序和功能”或“卸载程序”,在列表中找到 Java 相关条目(如“Java Runtime Environment”或“Java D…

java如何编程

java如何编程

Java编程基础 Java是一种面向对象的编程语言,广泛应用于企业级开发、移动应用(Android)等领域。以下是Java编程的核心步骤和示例。 环境搭建 安装JDK 从Oracle官网下载适合…

如何搭建java环境

如何搭建java环境

下载JDK 访问Oracle官网或OpenJDK官网下载适合操作系统的JDK安装包。推荐选择长期支持版本(如JDK 17或JDK 21)。 安装JDK 运行下载的安装程序,按照向导完成安装。注意…

java程序如何打包

java程序如何打包

打包Java程序的方法 使用JAR打包 Java程序可以通过JAR(Java Archive)格式打包,这是一种常见的压缩格式,适用于包含多个类文件和资源的项目。以下是使用JAR打包的步骤: 确保项…

如何升级java

如何升级java

检查当前Java版本 在升级之前,需确认当前安装的Java版本。在终端或命令提示符中运行以下命令: java -version 输出会显示当前Java版本(如1.8.0_301或17.0.2)。…