ArrayList vs LinkedList

I was really surprised to see this article. I typically have only ever used ArrayList because it fits my needs but I've always reserved the option of inserting another List should the situation change. After reading this, though, it doesn't seem there's much point to using LinkedList ever. I can see why operations in the middle would take a while since you have to scan the list to find element n but I didn't expect it to overshadow the cost of adjusting the array. (Though array copies are reasonably fast for most purposes). What really surprised me was the work on the end. That should be almost instantaneous provide it's a doubly-linked list.

What these numbers point out for me is that perhaps the Collections code should be revisited and vigorously optimized. I've heard too many stories of people writing custom implementations that are faster than the JDK offerings. Granted, the JDK is solving a generic problem and custom lists can be optimized for special cases, but none of the anecdotes I've heard really deal with corner cases. The Collections classes are too heavily used to be as inefficient as they appear to be.