Both ArrayList and LinkedList implements List interface so both of them are ordered by index and dynamically update its size
The difference is in the underlying implementation of these classes. ArrayList under the hood is simply an array and when you do
List a = new ArrayList();
a.add(4);
then the add method creates an array and add 4 to its 1st position
later on if you do
a.add(5)
then the add method creates another array of size = previous size + 1 and copy over the old values and write 5 to the 2nd position
However, LinkedList is all about pointers. It keeps a reference to the next element as well as the reference to the previous element (if it is doubly linked list...by default it is singly linked list)
Doubly linked list are useful if you want to access the previous element from the current position rather than iterating it forward until you wrap back to the previous element
It is better to use Linked List over Array List if your code requires lot of insertion and deletions. Please see this link and hope you find it helpful
http://en.wikipedia.org/wiki/Linked_list