ArrayList简介
1 | public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable |
- ArrayList 底层是数组队列, 属于动态数组, 可以根据实际的需要去动态地调整数组的大小
- ArrayList 继承了AbstractList类,说明它提供了增删改查等功能
- ArrayList 实现了RandomAccess接口, 说明实现这个接口的List集合是支持随机访问的
- ArrayList 实现了Cloneable接口, 说明它是可克隆的
- ArrayList 实现了Serialiable接口, 说明它是可以被序列化的
1 | public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable { |
小结
在阅读源码的过程中, 我发现, 源码中使用System.arraycopy这个方法居多, 其次便是Arrays.copyOf
System.arraycopy与Arrays.copyOf的区别是:
- arraycopy()需要目标数组,将原数组拷贝到你自己定义的数组里,而且可以选择拷贝的起点和长度以及放入新数组中的位置
- copyOf()是系统自动在内部新建一个数组,并返回该数组。
ArrayList 核心扩容
1 | /** |
来自JAVA Guid的demo
1 | public class ArrayListDemo { |