It's implementation is done with an array and the get operation is O(1).
javadoc says:
The size, isEmpty, get, set,
iterator, and listIterator operations run in constant
time. The add operation runs in amortized constant time,
that is, adding n elements requires O(n) time. All of the other operations
run in linear time (roughly speaking). The constant factor is low compared
to that for the LinkedList implementation.
As everyone has already pointed out, read operations are constant time - O(1) but write operations have the potential to run out of space in the backing array, re-allocation, and a copy - so that runs in O(n) time, as the doc says:
The size, isEmpty, get, set, iterator,
and listIterator operations run in
constant time. The add operation runs
in amortized constant time, that is,
adding n elements requires O(n) time.
All of the other operations run in
linear time (roughly speaking). The
constant factor is low compared to
that for the LinkedList
implementation.
The arraylist is basically an implementation of array. so the time complexity of the CRUD operations on it would be :
get/read : O(1) since you can seek the address directly from base
remove/delete : O(n) why ? Because once we delete the element at index, then we need to move the after values one by one to the left.
add : O(1) becuase you always add the end of the array - next free address available.
update : O(1) since you are just changing the value but nothing value moving....across the array.