ArrayList — dynamic array. LinkedList — doubly linked list.
ArrayList:
1ArrayList<Integer> list = new ArrayList<>();2list.add(1);3list.get(0); // O(1) random access4list.add(0, 10); // O(n) - shift elements
LinkedList:
1LinkedList<Integer> list = new LinkedList<>();2list.add(1);3list.get(0); // O(n) - traverse4list.addFirst(10); // O(1)
When to use: