行业资讯 2025年08月6日
0 收藏 0 点赞 350 浏览 1878 个字
摘要 :

文章目录 1.ArrayList的内部实现 2.ArrayList大小 3.ArrayList长度 4. ArrayList trimToSize() 5. 结论 Java 中的ArrayList表示一个可调整大小的对象数组,它允许我们……




  • 1.ArrayList的内部实现
  • 2.ArrayList大小
  • 3.ArrayList长度
  • 4. ArrayList trimToSize()
  • 5. 结论

Java 中的ArrayList表示一个可调整大小的对象数组,它允许我们添加、删除、查找、排序和替换元素。在内部,arraylist 维护一个固定大小的数组来添加/维护对象,并且其所有方法都访问此后备数组以进行各自的操作。

ArrayList不公开公开后备数组的长度,并且只能使用size()方法检索存储元素的数量。

1.ArrayList的内部实现

在内部,ArrayList类是使用数组(也称为支持数组)实现的。从ArrayList添加或删除的元素实际上是在后备数组中修改的。

public class ArrayList<E> ... {
  transient Object[] elementData;   //backing array
  private int size;                 //arraylist size
  //...
}

当我们将对象添加到数组列表时,它们将存储在支持数组中。使用size属性跟踪存储在数组中的元素数量。

2.ArrayList大小

ArrayList的大小是指ArrayList中存储的元素(包括值)的数量。

  • 当我们在数组列表中的任意位置添加元素时,大小会增加 1。
  • 当我们删除一个元素时,大小会减 1。
  • 当我们替换一个元素时,大小不会改变。
  • 当我们清除 arraylist 时,大小会重置为 0。

我们用一个例子来验证一下上面的情况。我们将初始化一个空数组列表,并执行一些添加/删除/清除操作。每次操作后,我们都会检查 arraylist 的大小。

ArrayList<Integer> arraylist = new ArrayList<>();
Assertions.assertEquals(0, arraylist.size()); //Initial size = 0
arraylist.add(1001);
Assertions.assertEquals(1, arraylist.size()); //Add increments the size by 1
arraylist.add(1002);
Assertions.assertEquals(2, arraylist.size()); //Add increments the size by 1
arraylist.set(0, 1000);
Assertions.assertEquals(2, arraylist.size()); //replace does not change the size
arraylist.remove(1002);
Assertions.assertEquals(1, arraylist.size()); //remove decrements the size by 1
arraylist.clear();
Assertions.assertEquals(0, arraylist.size()); //clear resets the size to 0

3.ArrayList长度

数组列表的长度是支持数组的长度。但是,由于ArrayList类不公开初始容量,因此无法使用公共 API 来验证长度。

请注意,arraylist 的默认初始容量为 10,这将创建一个长度为 10 的空后备数组。因此,使用默认无参数构造函数创建的空 arraylist 始终具有长度为 10 的后备数组。我们可以提供自定义初始容量(或数组长度)作为构造函数参数。

ArrayList<Integer> arraylist = new ArrayList<>();  // backing array of length 10
ArrayList<Integer> arraylist = new ArrayList<>(64);  // backing array of length 64

4. ArrayList trimToSize()

一个有趣的方法trimToSize() 使ArrayList实例的长度成为列表的当前大小。应用程序可以使用此操作来最小化ArrayList实例的存储空间。

修剪操作使用\'size\'属性创建一个新的后备数组并将元素存储在数组中。在新的支持数组中,所有数组索引都存储一个值。请注意,有效值也可以为null

arraylist.trimToSize();

5. 结论

为了简单起见,Java ArrayList 类不会公开支持数组的长度,而仅使用 size() 方法公开其中当前存储的元素的数量。尽管如此,了解长度的概念还是有好处的,这样当后备数组包含足够的索引而不指向任何值时,我们就可以使用trimToSize()方法。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/8963.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号