java创建动态数组_Java学习ArrayList之实现自己的动态数组

今天学习Java的ArrayList,看了底层代码,了解到了ArrayList底层是用数组实现的,并且,在创建一个ArrayList的时候,使用无参构造器

相当于:Object[]={},长度为0的数组

使用有参数的构造器:

所以,如果使用无参的构造器,那么初始的长度为0,

当第一次调用add()方法时,完成Object类型数组的初始化容量,10

首先第一次add(E e)的时候,会去检测容量是否够用calculateCapacity(elementData,minCapacity)

如果确实是{},则会返回DEFAULT_CAPACITY=10,再去执行ensureExplicitCapacity(),去扩充容量。

老的容量+老的容量/2,相当于扩容一半

下面是自己实现的一个动态数组:

总结:

感觉难点在于添加元素和删除元素

当向动态数组中某个位置index添加一个元素的时候,需要挪动后面的元素

for(int i=size-1;i>=index;i--){

data[i+1]=data[i];

}

//当index=2,size=5,则

//int i =5,i>=2,i--

//data[5]=data[4]

删除某个位置的元素index,并返回这个元素的值

E ret = data[index];

for(int i=idex+1;i

data[i-1]=data[i];

}

//index =1,i<5,i++

data[1]=data[2] → =data[1]=56

data[2]=data[3] → data[2] = 89

data[3]=data[4] → data[3]=89

i=index还是i=idex+1是个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值