当前位置:首页 > 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如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

java如何生成随机数

java如何生成随机数

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用Math.random()方法 Math.random()方法返回一个double类型的伪随机数,范围在[0…

java如何入门

java如何入门

学习基础语法 从Java的基础语法开始,包括变量、数据类型、运算符、控制结构(if-else、for循环、while循环)等。可以通过官方文档或入门教程学习。 安装开发环境 下载并安装JDK(J…

php 实现 java md5

php 实现 java md5

在 PHP 中实现与 Java 相同的 MD5 哈希算法,关键在于确保编码和输出格式的一致性。以下是具体实现方法和注意事项: 确保字符串编码一致 Java 的 String.getBytes() 默…

java实现js

java实现js

Java 实现 JavaScript 功能 在 Java 中实现 JavaScript 功能通常涉及以下几种方法: 使用 ScriptEngine Java 提供了 javax.script 包,可…

如何运行java

如何运行java

运行Java程序的方法 安装Java开发工具包(JDK) 确保系统已安装JDK。可通过命令行输入java -version和javac -version验证是否安装成功。若未安装,需从Oracle官网…