Which list implementation is optimal for removing and inserting from the front and back?
===

I am working on an algorithm that will store a small list of objects as a sublist of a larger set of objects.  the objects are inherently ordered, so an ordered list is required.

The most common operations performed will be, in order of frequency:

 1. retrieving the nth element from the list (for some arbitrary n)
 2. inserting a single to the beginning or end of the list
 3. removing the first or last n elements from the list (for some
    arbitrary n)

removing and inserting from the middle will never be done so there is no need to consider the efficiency of that.

My question is what implementation of List is most efficient for this use case in Java (i.e. LinkedList, ArrayList, Vector, etc)?  Please defend your answer by explaining the implementation s of the different data structures so that I can make an informed decision.

Thanks.