ArrayList implements the List interface
If you look at the ArrayList inner implementation, you will notice that it is wrapped around an array.
For instance here is one constructor implementation:
when you create a new ArrayList with initial capacity
public More ...ArrayList(int initialCapacity) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
}