参看:https://www.cnblogs.com/skywang12345/p/3308556.html
List比Collection多了indexOf()、lastIndexOf()、set()、get()方法

- AbstractList类提供了Collection接口的骨架实现,以减少实现此接口的工作量。为了实现一个不可修改的集合,程序员只需扩展这个类并提供此iterator和size方法实现。要实现可修改的集合,程序员必须要覆盖此类的add方法。
- Cloneable接口:一个类实现Cloneable接口,指示Object.clone()方法可以用于对该类的实例进行现场复制是合法的。若在没有实现Cloneable接口的上调用对象的克隆方法导致抛出异常CloneNotSupportException。
- RandomAccess接口:是一个标志接口(Marker),表明其支持快速访问。具体参看博客 https://blog.csdn.net/weixin_39148512/article/details/79234817
- Serializable接口:序列化。具体参看博客:https://www.cnblogs.com/huhx/p/serializable.html
ArrayList中的变量,下面构造函数和add()相关方法将会用到以下变量。
ArrayList的构造函数:
ArrayList API
//**Collection中定义的API**
boolean add(E object)
boolean addAll(Collection<? extends E> collection)
void clear()
boolean contains(Object object)
boolean containsAll(Collection<?> collection)
boolean equals(Object object)
int hashCode()
boolean isEmpty()
Iterator<E> iterator()
boolean remove(Object object)
boolean removeAll(Collection<?> collection)
boolean retainAll(Collection<?> collection)
int size()
<T> T[] toArray(T[] array)
Object[] toArray()
//**AbstractionList中定义的API**
void add(int location, E object)
boolean addAll(int location, Collection<? extends E> collection)
E get(int location)
int indexOf(Object object)
int lastIndexOf(Object object)
ListIterator<E> listIterator(int location)
ListIterator<E> listIterator()
E remove(int location)
E set(int location, E object)
List<E> subList(int start, int end)
// ArrayList新增的API
Object clone()
void ensureCapacity(int minimumCapacity)
void trimToSize()
void removeRange(int fromIndex, int toIndex)