面经-List

List在java里面是一个接口,常见得实现类有ArrayList和LinkedList,在开发中用的最多得是ArrayList

ArrayList:
ArrayList的底层数结构是数组

LinkedList:
LinkedList底层数据结构是列表

Q&A
1、Java本身就有数组,为什么要用ArrayList呢?
原生的数组会有一个特点:在你使用的时候必须要为它创建大小,而ArrayList不用
因为在日常开发中,我们往往不知道要分配多大的数组(不固定)
如果使用原生的List指定的数组小了,装不下。指定大了,又浪费空间。
而ArrayList就不一样了,它实现了动态扩容机制
就是当我们new ArrasyList()的时候,先会默认有一个空的Object数组,大小为0。
当我们第一次使用add往里面添加数据时,会默认初始化一个大小为10空间
使用ArrayList在每次add的时候,都会先去计算数组的空间够不够,如果不够就开始扩容。

2、ArrayList怎么扩容?一次扩多少?
在源码里边,有个grow方法,每次扩至原来得1.5倍
比如原来是10,那么newCapacity = 10 &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值