java集合实现--01 --源代码学习--创建集合对象

本文解析了Java中ArrayList的工作原理,展示了其内部实现细节,包括默认构造函数如何创建不可序列化的对象数组,以及如何通过size属性来区分默认null与实际添加的null元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java中List的实现:

1、List 定义了集合的增、删、查、改的方法,最后由它的子类来实现这些方法,下面我们来看看ArrayList源码它是怎么实现:

private transient Object[] elementData; public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = new Object[initialCapacity]; } /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this(10); }

从上面的的默认构造函数我们不难看出,其实它是创建了一个不可序列化的长度为10对象数组,那它既然已经创建了10个对象的数组,

为什么我们会取不出这些对象呢 ? 安装java虚拟的原则,其实它在加载--准备阶段已经给对象默认初始化为 null 了,其实这个

就是集合里面的size起作用了.其实大家应该都清楚,java对集合的size是做检验的,所以我们是不可能取出超过size的对象。

private int size;

不错, 其实它每往集合里面增加一个对象的时候它都会把 size 增加一的,其实集合里面是存在默认的10 个为 null 的对象,

并对象的size = 0 ,不信看看下面的图:

创建集合对象

List<?> list = new ArrayList<String>();

debug后看到集合里面的对象:

从上图我们不难看出当我们创建了一个 ArrayList 后它确实有了10个对象,而这些对象的默认都是 null,然后当我们往对象

里面增加一个为 null 的对象时候它就是通过 size 来区分是不是原来默认的 null ,我们在看我往集合里面增加一个为 null 的

对象的时候,它的size = 1 了:

集合里面增加一个为 null的对象:

List<?> list = new ArrayList<String>(); list.add(null);

debug显示的现象:

好了,从上面的对比我们不难看出,其实ArrayList 就是一个默认为10对象的数组,然后它们的默认值得都是null,并通过size来

决定集合的对象。很久没有写博客了,希望大家或老鸟能指导下,大家一起学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值