Say I have a ArrayList with n element in this array, and I add an element at the beginning:
myArrayList.add(0,\'some value\');
What will be the
ArrayList.add(0, element)
takes linear time, but the constant is very low, because it can use the blazing fast System.arraycopy
.
The ArrayList documentation is indeed obscure on this point -- I looked at it in SE11 just now, and it's unchanged since the first release of the Collections Framework (in Java 1.2).
I believe the intent of the authors of the ArrayList documentation was to specify that, on any implementation of Java, the appending operation (i.e. the add(E e)
method) must run in constant amortized time, and that the list insertion operation (i.e. the add(int index, E e)
method) must run in O(n)
time, where n
is the size of the list.
Adding an element to beginning of array is O(n) - it would require to shift all the existing elements by one position.
All elements in an array list are stored in a contiguous array. If you add more elements than the current size of the array - it will be grown automatically to accommodate the new element.
Addition to the end is O(1) amortized over multiple insertions.