參看: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)