When should I use LinkedList? When you need efficient removal in between elements or at the start. When you don't need random access to elements, but can live with iterating over them one by one When should I use ArrayList? When you need random access to elements ("get the nth. element") When you don't need to remove elements from between others. It's possible but it's slower since the internal backing-up array needs to be reallocated. Adding elements is amortized constant time (meaning every once in a while, you pay some performance, but overall adding is instantly done) Adding elements is okay, unless you are going to push over the currently allocated number of elements, in which case it becomes fairly expensive (copy all of the items to a new, larger array). – Matthew Schinckel Nov 27 '08 at 1:44 ... LinkedList is almost always the wrong choice, performance-wise. There are some very specific algorithms where a LinkedList is called for, but those are very, very rare and the algorithm will usually specifically depend on LinkedList's ability to insert and delete elements in the middle of the list relatively quickly, once you've navigated there with a ListIterator.