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 &