List is an interface (not technically an Object) but it is usually the best compromise between abstraction and specifics. I've never needed to do anything to a List implementation that I couldn't do with the List.
Anyways, the implementation possibilities are:
Vector - old, not really recommended unless you require synchronized access. Won't kill you to use it though
ArrayList - newer, pretty much identical to Vector except without built in synchronization so it's supposedly faster. I've never noticed the difference between the two but then I've never benchmarked them
LinkedList - really only appropriate if you will be using the List from the ends and really require that extra little bit of speed.